Merge branch 'master' into water
Conflicts: src/game/Game/LevelSystem.cpp src/game/Physics/PhysicsSystem.cpp
This commit is contained in:
@@ -72,6 +72,7 @@ void dd::Renderer::Initialize()
|
||||
|
||||
m_CurrentScreenBuffer = m_TFinal;
|
||||
}
|
||||
|
||||
void dd::Renderer::LoadShaders()
|
||||
{
|
||||
/*
|
||||
@@ -384,6 +385,11 @@ void dd::Renderer::DrawForward(RenderQueue &objects, RenderQueue &lights)
|
||||
DrawWater(objects);
|
||||
}
|
||||
|
||||
void dd::Renderer::PlaceCamera(glm::vec3 position)
|
||||
{
|
||||
m_DefaultCamera->SetPosition(position);
|
||||
}
|
||||
|
||||
void dd::Renderer::DrawScene(RenderQueue &objects, ShaderProgram &program)
|
||||
{
|
||||
GLuint shaderProgramHandle = program;
|
||||
|
||||
@@ -126,7 +126,7 @@ void dd::Systems::BallSystem::UpdateEntity(double dt, EntityID entity, EntityID
|
||||
} else if (!ballComponent->Sticky) {
|
||||
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||
transform->Velocity = glm::vec3(0.f, 0.f, 0.f);
|
||||
transform->Position = glm::vec3(0.0f, -3.f, -10.f);
|
||||
//transform->Position = glm::vec3(0.0f, -3.f, -10.f);
|
||||
transform->Orientation = glm::quat();
|
||||
return;
|
||||
}
|
||||
@@ -288,27 +288,29 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event)
|
||||
float y = glm::cos((abs(x) / (1.6f)) * glm::pi<float>() / 2.f) + 1.f;
|
||||
|
||||
ballComponent->Combo = 0;
|
||||
|
||||
if (m_InkBlaster) {
|
||||
if (!m_InkAttached) {
|
||||
m_InkAttached = true;
|
||||
m_Waiting = true;
|
||||
m_InkBlockedWaiting = true;
|
||||
ballComponent->Sticky = true;
|
||||
ballComponent->StickyPlacement = glm::vec3(0, 0.5f, 0);
|
||||
ballComponent->SavedSpeed = glm::normalize(glm::vec3(x, y, 0.f)) * ballComponent->Speed;
|
||||
ballTransform->Velocity = glm::vec3(0.f, 0.f, 0.f);
|
||||
if (!ballComponent->Waiting) {
|
||||
if (m_InkBlaster) {
|
||||
if (!m_InkAttached) {
|
||||
m_InkAttached = true;
|
||||
m_Waiting = true;
|
||||
m_InkBlockedWaiting = true;
|
||||
ballComponent->Sticky = true;
|
||||
ballComponent->StickyPlacement = glm::vec3(0, 0.5f, 0);
|
||||
ballComponent->SavedSpeed = glm::normalize(glm::vec3(x, y, 0.f)) * ballComponent->Speed;
|
||||
ballTransform->Velocity = glm::vec3(0.f, 0.f, 0.f);
|
||||
}
|
||||
}
|
||||
else if (m_Sticky) {
|
||||
m_Sticky = false;
|
||||
m_Waiting = true;
|
||||
ballComponent->Sticky = true;
|
||||
ballComponent->StickyPlacement = ballTransform->Position - padTransform->Position;
|
||||
ballComponent->SavedSpeed = glm::normalize(glm::vec3(x, y, 0.f)) * ballComponent->Speed;
|
||||
ballTransform->Velocity *= -1;
|
||||
Events::StickyAttachedToPad e;
|
||||
EventBroker->Publish(e);
|
||||
return true;
|
||||
}
|
||||
} else if (m_Sticky) {
|
||||
m_Sticky = false;
|
||||
m_Waiting = true;
|
||||
ballComponent->Sticky = true;
|
||||
ballComponent->StickyPlacement = ballTransform->Position - padTransform->Position;
|
||||
ballComponent->SavedSpeed = glm::normalize(glm::vec3(x, y, 0.f)) * ballComponent->Speed;
|
||||
ballTransform->Velocity *= -1;
|
||||
Events::StickyAttachedToPad e;
|
||||
EventBroker->Publish(e);
|
||||
return true;
|
||||
}
|
||||
|
||||
ballTransform->Velocity = glm::normalize(glm::vec3(x, y ,0.f)) * ballComponent->Speed;
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
void dd::Systems::LevelSystem::Initialize()
|
||||
{
|
||||
std::random_device rd;
|
||||
m_RandomGenerator = std::mt19937(rd());
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EContact, &LevelSystem::OnContact);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EScoreEvent, &LevelSystem::OnScoreEvent);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EMultiBall, &LevelSystem::OnMultiBall);
|
||||
@@ -34,14 +36,11 @@ void dd::Systems::LevelSystem::Initialize()
|
||||
transform->Sticky = false;
|
||||
|
||||
model->ModelFile = "Models/Brick/WhiteBrick.obj";
|
||||
transform->Position = glm::vec3(50, 50, -10);
|
||||
|
||||
//sound
|
||||
auto collisionSound = m_World->AddComponent<Components::CollisionSound>(m_BrickTemplate);
|
||||
collisionSound->FilePath = "Sounds/Brick/shortbrickbreak.wav";
|
||||
|
||||
m_World->CommitEntity(m_BrickTemplate);
|
||||
|
||||
transform->Position = glm::vec3(50, 50, -10);
|
||||
//sound
|
||||
auto collisionSound = m_World->AddComponent<Components::CollisionSound>(m_BrickTemplate);
|
||||
collisionSound->FilePath = "Sounds/Brick/shortbrickbreak.wav";
|
||||
m_World->CommitEntity(m_BrickTemplate);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -78,7 +77,7 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID
|
||||
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||
//Removes bricks that falls out of the stage.
|
||||
if (transform->Position.y < -10) {
|
||||
/*if (brick->Type == StandardBrick) {
|
||||
if (brick->Type == StandardBrick) {
|
||||
} else if (brick->Type == MultiBallBrick) {
|
||||
Events::MultiBall e;
|
||||
e.padTransform = transform;
|
||||
@@ -99,9 +98,9 @@ void dd::Systems::LevelSystem::UpdateEntity(double dt, EntityID entity, EntityID
|
||||
e.KrakenStrength = 0.1;
|
||||
e.PlayerStrength = 0.05;
|
||||
EventBroker->Publish(e);
|
||||
}*/
|
||||
m_LooseBricks--;
|
||||
m_World->RemoveEntity(entity);
|
||||
}
|
||||
m_LooseBricks--;
|
||||
m_World->RemoveEntity(entity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,6 +202,7 @@ void dd::Systems::LevelSystem::CreateBrick(int row, int line, glm::vec2 spacesBe
|
||||
cBrick->Type = StandardBrick;
|
||||
auto type = m_World->AddComponent<Components::StandardBrick>(brick);
|
||||
model->Color = colorVec;
|
||||
SetBrokenModel(brick);
|
||||
} else if (typeInt == MultiBallBrick) {
|
||||
cBrick->Type = MultiBallBrick;
|
||||
auto type = m_World->AddComponent<Components::MultiBallBrick>(brick);
|
||||
@@ -311,12 +311,14 @@ void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBr
|
||||
{
|
||||
auto brick = m_World->GetComponent<Components::Brick>(entityBrick);
|
||||
auto physicsComponent = m_World->GetComponent<Components::Physics>(entityBrick);
|
||||
physicsComponent->CollisionType = CollisionType::Type::Dynamic;
|
||||
physicsComponent->GravityScale = 1.f;
|
||||
physicsComponent->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::Water | CollisionLayer::Wall);
|
||||
//physicsComponent->CollisionType = CollisionType::Type::Dynamic;
|
||||
//physicsComponent->GravityScale = 1.f;
|
||||
//physicsComponent->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::Water | CollisionLayer::Wall);
|
||||
|
||||
auto transformComponentBrick = m_World->GetComponent<Components::Transform>(entityBrick);
|
||||
auto transformComponentHitter = m_World->GetComponent<Components::Transform>(entityHitter);
|
||||
|
||||
|
||||
auto brickModel = m_World->GetComponent<Components::Model>(entityBrick);
|
||||
|
||||
// Check if the brick is any kind of special.
|
||||
@@ -365,40 +367,43 @@ void dd::Systems::LevelSystem::BrickHit(EntityID entityHitter, EntityID entityBr
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
auto brickChildren = m_World->GetEntityChildren(entityBrick);
|
||||
for (auto b : brickChildren)
|
||||
{
|
||||
|
||||
Events::SetImpulse e;
|
||||
e.Entity = entityBrick;
|
||||
|
||||
glm::vec2 point = glm::vec2(transformComponentBrick->Position.x + ((transformComponentHitter->Position.x - transformComponentBrick->Position.x) / 4),
|
||||
transformComponentBrick->Position.y + ((transformComponentHitter->Position.y - transformComponentBrick->Position.y) / 4));
|
||||
auto cTransform = m_World->GetComponent<Components::Transform>(b);
|
||||
cTransform->Position = cTransform->Position + transformComponentBrick->Position;
|
||||
glm::vec2 ballToBrick = 4.f * glm::normalize(glm::vec2(cTransform->Position.x - transformComponentHitter->Position.x, cTransform->Position.y - transformComponentHitter->Position.y));
|
||||
cTransform->Velocity = glm::vec3(ballToBrick.x, ballToBrick.y, 0.f);
|
||||
|
||||
std::uniform_real_distribution<float> dist(-1.5f, 1.5f);
|
||||
int impulseStrength = dist(m_RandomGenerator);
|
||||
|
||||
Events::SetImpulse i;
|
||||
i.Entity = b;
|
||||
i.Impulse = glm::vec2(impulseStrength, 0.f);
|
||||
i.Point = glm::vec2(cTransform->Position.x, cTransform->Position.y + 0.5f);
|
||||
EventBroker->Publish(i);
|
||||
|
||||
auto cModel = m_World->GetComponent<Components::Model>(b);
|
||||
cModel->Color = brickModel->Color;
|
||||
cModel->Color *= 0.5f;
|
||||
|
||||
m_World->RemoveComponent<Components::Template>(b);
|
||||
m_World->SetEntityParent(b, 0);
|
||||
m_World->CommitEntity(b);
|
||||
}
|
||||
|
||||
e.Impulse = glm::normalize(point)*5.f;
|
||||
e.Point = point;
|
||||
EventBroker->Publish(e);
|
||||
|
||||
SetNumberOfBricks(NumberOfBricks() - 1);
|
||||
Events::ScoreEvent es;
|
||||
es.Score = brick->Score * combo;
|
||||
EventBroker->Publish(es);
|
||||
|
||||
Events::CreateParticleSequence ep;
|
||||
ep.parent = entityBrick;
|
||||
ep.EmitterLifeTime = 1.f;
|
||||
ep.ParticleLifeTime = 1.5f;
|
||||
ep.ParticlesPerTick = 1;
|
||||
ep.SpawnRate = 0.2;
|
||||
ep.EmittingAngle = glm::half_pi<float>();
|
||||
ep.Spread = 1.5f;
|
||||
ep.Position = transformComponentBrick->Position;
|
||||
//ep.Radius = 0.05;
|
||||
ep.SpriteFile = "Textures/Particles/FadeBall.png";
|
||||
ep.Color = brickModel->Color + glm::vec4(0.3f);
|
||||
ep.AlphaValues.push_back(1.f);
|
||||
ep.AlphaValues.push_back(0.f);
|
||||
ep.RadiusValues.push_back(0.05f);
|
||||
ep.RadiusDistribution = 0.05f;
|
||||
ep.Speed = 50;
|
||||
EventBroker->Publish(ep);
|
||||
m_LooseBricks--;
|
||||
m_World->RemoveEntity(entityBrick);
|
||||
}
|
||||
|
||||
bool dd::Systems::LevelSystem::OnScoreEvent(const dd::Events::ScoreEvent &event)
|
||||
@@ -697,3 +702,57 @@ bool dd::Systems::LevelSystem::OnHitPad(const dd::Events::HitPad &event)
|
||||
m_Cleared = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void dd::Systems::LevelSystem::SetBrokenModel(EntityID entity)
|
||||
{
|
||||
std::uniform_int_distribution<int> dist(0, 2);
|
||||
int index = dist(m_RandomGenerator);
|
||||
|
||||
switch (index)
|
||||
{
|
||||
case 0:
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/1/WhiteBrickBreak1.obj", glm::vec3(-0.29912f, 0.0082f, 0.f), glm::vec2(0.281f, 0.351f));
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/1/WhiteBrickBreak2.obj", glm::vec3(0.07597f, -0.02899f, 0.f), glm::vec2(0.559f, 0.351f));
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/1/WhiteBrickBreak3.obj", glm::vec3(0.3227f, 0.05632, 0.f), glm::vec2(0.25f, 0.25f));
|
||||
break;
|
||||
|
||||
case 1:
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/2/WhiteBrickBreak1.obj", glm::vec3(-0.3236f, 0.0159f, 0.f), glm::vec2(0.237f, 0.327f));
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/2/WhiteBrickBreak2.obj", glm::vec3(0.07645f, 0.03131f, 0.f), glm::vec2(0.594f, 0.211f));
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/2/WhiteBrickBreak3.obj", glm::vec3(0.09468f, -0.11792f, 0.f), glm::vec2(0.692f, 0.112f));
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/2/WhiteBrickBreak4.obj", glm::vec3(0.33957f, 0.13079f, 0.f), glm::vec2(0.208f, 0.085f));
|
||||
break;
|
||||
|
||||
case 2:
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/3/WhiteBrickBreak1.obj", glm::vec3(-0.34882f, 0.0564f, 0.f), glm::vec2(0.175f, 0.228f));
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/3/WhiteBrickBreak2.obj", glm::vec3(0.0678f, 0.07679f, 0.f), glm::vec2(0.699f, 0.183f));
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/3/WhiteBrickBreak3.obj", glm::vec3(-0.11862f, -0.10342, 0.f), glm::vec2(0.563f, 0.164f));
|
||||
CreateBrokenModelPart(entity, "Models/Brick/BrickBreak/3/WhiteBrickBreak4.obj", glm::vec3(0.31479f, -0.06351f, 0.f), glm::vec2(0.261f, 0.21f));
|
||||
break;
|
||||
|
||||
default:
|
||||
LOG_INFO("Something went wrong with the random generator in SetBrokenModel");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void dd::Systems::LevelSystem::CreateBrokenModelPart(EntityID Parent, std::string ModelPath, glm::vec3 RelativePosition, glm::vec2 Hitbox)
|
||||
{
|
||||
auto ent = m_World->CreateEntity(Parent);
|
||||
auto cTemplate = m_World->AddComponent<Components::Template>(ent);
|
||||
auto cTransform = m_World->AddComponent<Components::Transform>(ent);
|
||||
|
||||
cTransform->Position = RelativePosition;
|
||||
|
||||
auto cModel = m_World->AddComponent<Components::Model>(ent);
|
||||
cModel->ModelFile = ModelPath;
|
||||
|
||||
auto cRec = m_World->AddComponent<Components::RectangleShape>(ent);
|
||||
cRec->Dimensions = Hitbox;
|
||||
|
||||
auto cPhys = m_World->AddComponent<Components::Physics>(ent);
|
||||
cPhys->CollisionType = CollisionType::Type::Dynamic;
|
||||
cPhys->GravityScale = 1.f;
|
||||
cPhys->Category = CollisionLayer::Type::Brick;
|
||||
cPhys->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::Type::Wall);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ void dd::Systems::PadSystem::Initialize()
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EContact, &PadSystem::OnContact);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EContactPowerUp, &PadSystem::OnContactPowerUp);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EStageCleared, &PadSystem::OnStageCleared);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EResetBall, &PadSystem::OnResetBall);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EPause, &PadSystem::OnPause);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EKrakenAttack, &PadSystem::OnKrakenAttack);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EStickyPad, &PadSystem::OnStickyPad);
|
||||
@@ -72,6 +73,8 @@ void dd::Systems::PadSystem::Initialize()
|
||||
m_StickTransform = transform;
|
||||
m_StickyAim = sticky;
|
||||
}
|
||||
|
||||
m_ResetBall = true;
|
||||
}
|
||||
|
||||
void dd::Systems::PadSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
||||
@@ -81,7 +84,12 @@ void dd::Systems::PadSystem::UpdateEntity(double dt, EntityID entity, EntityID p
|
||||
|
||||
auto ball = m_World->GetComponent<Components::Ball>(entity);
|
||||
if (ball != nullptr) {
|
||||
if (ball->Sticky) {
|
||||
if (ball->Waiting || ball->Sticky) {
|
||||
if (m_ResetBall && ball->Waiting) {
|
||||
ball->StickyPlacement = glm::vec3(0.f, 0.f, 0.f);
|
||||
ball->StickyPlacement.y += 0.45f;
|
||||
m_ResetBall = false;
|
||||
}
|
||||
auto ballTransform = m_World->GetComponent<Components::Transform>(entity);
|
||||
ballTransform->Position = Transform()->Position;
|
||||
ballTransform->Position += ball->StickyPlacement;
|
||||
@@ -89,8 +97,10 @@ void dd::Systems::PadSystem::UpdateEntity(double dt, EntityID entity, EntityID p
|
||||
glm::vec2 up = glm::vec2(0.f, 1.f);
|
||||
float angle = glm::acos(glm::dot<float>(dir, up)) * glm::sign(dir.x);
|
||||
ballTransform->Orientation = glm::rotate(glm::quat(), angle, glm::vec3(0.f, 0.f, -1.f));
|
||||
m_StickTransform->Orientation = glm::rotate(glm::quat(), angle, glm::vec3(0.f, 0.f, 1.f));
|
||||
m_StickTransform->Position = ballTransform->Position;
|
||||
if (ball->Sticky) {
|
||||
m_StickTransform->Orientation = glm::rotate(glm::quat(), angle, glm::vec3(0.f, 0.f, 1.f));
|
||||
m_StickTransform->Position = ballTransform->Position;
|
||||
}
|
||||
}
|
||||
if (!m_StickyAim->Aiming) {
|
||||
m_StickTransform->Position = glm::vec3(30.f, 0.f, 0.f);
|
||||
@@ -103,6 +113,7 @@ void dd::Systems::PadSystem::Update(double dt)
|
||||
if (IsPaused()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Entity() == 0) {
|
||||
for (auto it = m_World->GetEntities()->begin(); it != m_World->GetEntities()->end(); it++) {
|
||||
if (m_World->GetProperty<std::string>(it->first, "Name") == "Pad") {
|
||||
@@ -209,6 +220,12 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) {
|
||||
} else if (val == GLFW_KEY_S) {
|
||||
Events::StageCleared e;
|
||||
EventBroker->Publish(e);
|
||||
} else if (val == GLFW_KEY_E) {
|
||||
Events::ScreenShake e;
|
||||
e.Intensity = 20;
|
||||
e.Time = 3;
|
||||
e.TimeTakenToCoolDown = 10;
|
||||
EventBroker->Publish(e);
|
||||
} else if (val == GLFW_KEY_Y) {
|
||||
Events::StickyPad e;
|
||||
EventBroker->Publish(e);
|
||||
@@ -342,9 +359,16 @@ bool dd::Systems::PadSystem::OnContactPowerUp(const dd::Events::Contact &event)
|
||||
bool dd::Systems::PadSystem::OnStageCleared(const dd::Events::StageCleared &event)
|
||||
{
|
||||
//auto entity = CreateBall();
|
||||
m_StickyAim->Aiming = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dd::Systems::PadSystem::OnResetBall(const dd::Events::ResetBall &event)
|
||||
{
|
||||
m_ResetBall = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dd::Systems::PadSystem::OnKrakenAttack(const dd::Events::KrakenAttack &event)
|
||||
{
|
||||
if (!m_KrakenAttack) {
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// Created by Adniklastrator on 2015-10-13.
|
||||
//
|
||||
|
||||
#include "PrecompiledHeader.h"
|
||||
#include "Game/TravellingSystem.h"
|
||||
|
||||
void dd::Systems::TravellingSystem::Initialize()
|
||||
{
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EPause, &TravellingSystem::OnPause);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EStageCleared, &TravellingSystem::OnStageCleared);
|
||||
}
|
||||
|
||||
void dd::Systems::TravellingSystem::Update(double dt)
|
||||
{
|
||||
if (m_Pause) {
|
||||
return;
|
||||
}
|
||||
if (m_Travelling) {
|
||||
if (m_DistanceTravelled > 12.f) {
|
||||
m_DistanceTravelled = 0;
|
||||
m_Travelling = false;
|
||||
Events::ArrivedAtNewStage e;
|
||||
EventBroker->Publish(e);
|
||||
}
|
||||
|
||||
m_DistanceTravelled += 6.0f * dt;
|
||||
}
|
||||
}
|
||||
|
||||
void dd::Systems::TravellingSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
||||
{
|
||||
if (m_Travelling) {
|
||||
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||
if (transform != nullptr) {
|
||||
if (!transform->Sticky) {
|
||||
transform->Position.y -= 6.0f * dt;
|
||||
}
|
||||
}
|
||||
else {
|
||||
transform->Position.y -= 6.0f * dt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool dd::Systems::TravellingSystem::OnPause(const dd::Events::Pause &event)
|
||||
{
|
||||
if (event.Type != "TravellingSystem" && event.Type != "All") {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsPaused()) {
|
||||
SetPause(false);
|
||||
} else {
|
||||
SetPause(true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dd::Systems::TravellingSystem::OnStageCleared(const dd::Events::StageCleared &event)
|
||||
{
|
||||
if (event.ClearedStage < 5) {
|
||||
m_Travelling = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -23,7 +23,6 @@ void dd::Systems::PhysicsSystem::Initialize()
|
||||
InitializeWater();
|
||||
EVENT_SUBSCRIBE_MEMBER(m_SetImpulse, &PhysicsSystem::SetImpulse);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EPause, &PhysicsSystem::OnPause);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EStageCleared, &PhysicsSystem::OnStageCleared);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_ECreateParticleSequence, &PhysicsSystem::CreateParticleSequence);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_EContact, &PhysicsSystem::OnContact);
|
||||
}
|
||||
@@ -170,17 +169,6 @@ void dd::Systems::PhysicsSystem::Update(double dt)
|
||||
if (m_Pause) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_Travelling) {
|
||||
if (m_DistanceTravelled > 12.f) {
|
||||
m_DistanceTravelled = 0;
|
||||
m_Travelling = false;
|
||||
Events::ArrivedAtNewStage e;
|
||||
EventBroker->Publish(e);
|
||||
}
|
||||
|
||||
m_DistanceTravelled += 6.0f * dt;
|
||||
}
|
||||
m_Accumulator += dt;
|
||||
|
||||
while(m_Accumulator >= m_TimeStep)
|
||||
@@ -256,20 +244,8 @@ void dd::Systems::PhysicsSystem::Update(double dt)
|
||||
|
||||
void dd::Systems::PhysicsSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
|
||||
{
|
||||
if (m_Travelling) {
|
||||
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||
if (transform != nullptr) {
|
||||
if (!transform->Sticky) {
|
||||
transform->Position.y -= 6.0f * dt;
|
||||
}
|
||||
} else {
|
||||
transform->Position.y -= 6.0f * dt;
|
||||
}
|
||||
}
|
||||
auto particle = m_World->GetComponent<Components::Particle>(entity);
|
||||
auto pTemplate = m_World->GetComponent<Components::Template>(entity);
|
||||
|
||||
|
||||
|
||||
if (particle && !pTemplate) {
|
||||
particle->TimeLived += dt;
|
||||
@@ -394,15 +370,6 @@ void dd::Systems::PhysicsSystem::OnEntityRemoved(EntityID entity)
|
||||
}
|
||||
|
||||
|
||||
bool dd::Systems::PhysicsSystem::OnStageCleared(const dd::Events::StageCleared &event)
|
||||
{
|
||||
if (event.ClearedStage < 5) {
|
||||
m_Travelling = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void dd::Systems::PhysicsSystem::CreateBody(EntityID entity)
|
||||
{
|
||||
auto physicsComponent = m_World->GetComponent<Components::Physics>(entity);
|
||||
|
||||
Reference in New Issue
Block a user