Moved pad-creation to PadSystem. Pad now stops at sides.
This commit is contained in:
+3
-23
@@ -111,10 +111,6 @@ public:
|
|||||||
m_World->ComponentFactory.Register<Components::PowerUp>();
|
m_World->ComponentFactory.Register<Components::PowerUp>();
|
||||||
m_World->ComponentFactory.Register<Components::PowerUpBrick>();
|
m_World->ComponentFactory.Register<Components::PowerUpBrick>();
|
||||||
|
|
||||||
m_World->SystemFactory.Register<Systems::PhysicsSystem>(
|
|
||||||
[this]() { return new Systems::PhysicsSystem(m_World.get(), m_EventBroker); });
|
|
||||||
m_World->AddSystem<Systems::PhysicsSystem>();
|
|
||||||
|
|
||||||
m_World->SystemFactory.Register<Systems::LevelSystem>(
|
m_World->SystemFactory.Register<Systems::LevelSystem>(
|
||||||
[this]() { return new Systems::LevelSystem(m_World.get(), m_EventBroker); });
|
[this]() { return new Systems::LevelSystem(m_World.get(), m_EventBroker); });
|
||||||
m_World->AddSystem<Systems::LevelSystem>();
|
m_World->AddSystem<Systems::LevelSystem>();
|
||||||
@@ -124,6 +120,9 @@ public:
|
|||||||
m_World->SystemFactory.Register<Systems::BallSystem>(
|
m_World->SystemFactory.Register<Systems::BallSystem>(
|
||||||
[this]() { return new Systems::BallSystem(m_World.get(), m_EventBroker); });
|
[this]() { return new Systems::BallSystem(m_World.get(), m_EventBroker); });
|
||||||
m_World->AddSystem<Systems::BallSystem>();
|
m_World->AddSystem<Systems::BallSystem>();
|
||||||
|
m_World->SystemFactory.Register<Systems::PhysicsSystem>(
|
||||||
|
[this]() { return new Systems::PhysicsSystem(m_World.get(), m_EventBroker); });
|
||||||
|
m_World->AddSystem<Systems::PhysicsSystem>();
|
||||||
|
|
||||||
m_World->ComponentFactory.Register<Components::Model>();
|
m_World->ComponentFactory.Register<Components::Model>();
|
||||||
m_World->ComponentFactory.Register<Components::Template>();
|
m_World->ComponentFactory.Register<Components::Template>();
|
||||||
@@ -320,25 +319,6 @@ public:
|
|||||||
m_World->CommitEntity(rightWall);
|
m_World->CommitEntity(rightWall);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
auto ent = m_World->CreateEntity();
|
|
||||||
m_World->SetProperty(ent, "Name", "Pad");
|
|
||||||
auto ctransform = m_World->AddComponent<Components::Transform>(ent);
|
|
||||||
ctransform->Position = glm::vec3(0.f, -3.5f, -10.f);
|
|
||||||
ctransform->Scale = glm::vec3(1.0f, 1.0f, 1.f);
|
|
||||||
auto rectangle = m_World->AddComponent<Components::RectangleShape>(ent);
|
|
||||||
auto physics = m_World->AddComponent<Components::Physics>(ent);
|
|
||||||
physics->Static = false;
|
|
||||||
physics->Category = CollisionLayer::Type::Pad;
|
|
||||||
physics->Mask = CollisionLayer::Type::Ball | CollisionLayer::Type::PowerUp;
|
|
||||||
physics->Calculate = true;
|
|
||||||
auto cModel = m_World->AddComponent<Components::Model>(ent);
|
|
||||||
cModel->ModelFile = "Models/Submarine2.obj";
|
|
||||||
|
|
||||||
auto pad = m_World->AddComponent<Components::Pad>(ent);
|
|
||||||
m_World->CommitEntity(ent);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//EVENT_SUBSCRIBE_MEMBER(m_EGameStart, &Engine::OnGameStart);
|
//EVENT_SUBSCRIBE_MEMBER(m_EGameStart, &Engine::OnGameStart);
|
||||||
m_EGameStart = decltype(m_EGameStart)(std::bind(&Engine::OnGameStart, this, std::placeholders::_1));
|
m_EGameStart = decltype(m_EGameStart)(std::bind(&Engine::OnGameStart, this, std::placeholders::_1));
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ public:
|
|||||||
void SetLeft(const bool& left) { m_Left = left; }
|
void SetLeft(const bool& left) { m_Left = left; }
|
||||||
bool Right() const { return m_Right; }
|
bool Right() const { return m_Right; }
|
||||||
void SetRight(const bool& right) { m_Right = right; }
|
void SetRight(const bool& right) { m_Right = right; }
|
||||||
|
float Edge() const { return m_Edge; }
|
||||||
|
void SetEdge(const float& edge) { m_Edge = edge; }
|
||||||
|
|
||||||
Components::Transform* Transform() const { return m_Transform; }
|
Components::Transform* Transform() const { return m_Transform; }
|
||||||
void SetTransform(Components::Transform* transform) { m_Transform = transform; }
|
void SetTransform(Components::Transform* transform) { m_Transform = transform; }
|
||||||
@@ -66,6 +68,7 @@ private:
|
|||||||
glm::vec3 m_Acceleration = glm::vec3(0.f, 0.f, 0.f);
|
glm::vec3 m_Acceleration = glm::vec3(0.f, 0.f, 0.f);
|
||||||
bool m_Left = false;
|
bool m_Left = false;
|
||||||
bool m_Right = false;
|
bool m_Right = false;
|
||||||
|
float m_Edge = 2.8f;
|
||||||
Components::Transform* m_Transform;
|
Components::Transform* m_Transform;
|
||||||
Components::Pad* m_Pad;
|
Components::Pad* m_Pad;
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,27 @@ void dd::Systems::PadSystem::Initialize()
|
|||||||
EVENT_SUBSCRIBE_MEMBER(m_EContact, &PadSystem::OnContact);
|
EVENT_SUBSCRIBE_MEMBER(m_EContact, &PadSystem::OnContact);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EContactPowerUp, &PadSystem::OnContactPowerUp);
|
EVENT_SUBSCRIBE_MEMBER(m_EContactPowerUp, &PadSystem::OnContactPowerUp);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EStageCleared, &PadSystem::OnStageCleared);
|
EVENT_SUBSCRIBE_MEMBER(m_EStageCleared, &PadSystem::OnStageCleared);
|
||||||
|
|
||||||
|
{
|
||||||
|
auto ent = m_World->CreateEntity();
|
||||||
|
m_World->SetProperty(ent, "Name", "Pad");
|
||||||
|
auto ctransform = m_World->AddComponent<Components::Transform>(ent);
|
||||||
|
ctransform->Position = glm::vec3(0.f, -3.5f, -10.f);
|
||||||
|
ctransform->Scale = glm::vec3(1.0f, 1.0f, 1.f);
|
||||||
|
auto rectangle = m_World->AddComponent<Components::RectangleShape>(ent);
|
||||||
|
auto physics = m_World->AddComponent<Components::Physics>(ent);
|
||||||
|
physics->Static = false;
|
||||||
|
physics->Category = CollisionLayer::Type::Pad;
|
||||||
|
physics->Mask = CollisionLayer::Type::Ball | CollisionLayer::Type::PowerUp;
|
||||||
|
physics->Calculate = true;
|
||||||
|
auto cModel = m_World->AddComponent<Components::Model>(ent);
|
||||||
|
cModel->ModelFile = "Models/Submarine2.obj";
|
||||||
|
|
||||||
|
auto pad = m_World->AddComponent<Components::Pad>(ent);
|
||||||
|
m_World->CommitEntity(ent);
|
||||||
|
|
||||||
|
SetEdge(3.2 - (ctransform->Scale.x / 2));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dd::Systems::PadSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
void dd::Systems::PadSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
||||||
@@ -59,6 +80,11 @@ void dd::Systems::PadSystem::Update(double dt)
|
|||||||
transform->Velocity.x = pad->MaxSpeed;
|
transform->Velocity.x = pad->MaxSpeed;
|
||||||
}
|
}
|
||||||
transform->Position += transform->Velocity * (float)dt;
|
transform->Position += transform->Velocity * (float)dt;
|
||||||
|
if (transform->Position.x > Edge()) {
|
||||||
|
transform->Position.x = Edge();
|
||||||
|
} else if (transform->Position.x < -Edge()) {
|
||||||
|
transform->Position.x = -Edge();
|
||||||
|
}
|
||||||
transform->Velocity += acceleration * (float)dt;
|
transform->Velocity += acceleration * (float)dt;
|
||||||
if (glm::abs(transform->Velocity.x) > 1 || (!Left() && !Right())) {
|
if (glm::abs(transform->Velocity.x) > 1 || (!Left() && !Right())) {
|
||||||
transform->Velocity -= transform->Velocity * pad->SlowdownModifier * (float) dt;
|
transform->Velocity -= transform->Velocity * pad->SlowdownModifier * (float) dt;
|
||||||
|
|||||||
Reference in New Issue
Block a user