ScreenShake works as intended at the press of E and upon calling the event.

This commit is contained in:
PlatinumSkink
2015-10-13 18:34:21 +02:00
parent 8762fe3513
commit ffea58d41f
3 changed files with 27 additions and 20 deletions
+24 -19
View File
@@ -286,8 +286,8 @@ public:
auto transform = m_World->AddComponent<Components::Transform>(BottomWall); auto transform = m_World->AddComponent<Components::Transform>(BottomWall);
transform->Position = glm::vec3(0.f, -6.f, -10.f); transform->Position = glm::vec3(0.f, -6.f, -10.f);
transform->Scale = glm::vec3(20.f, 0.5f, 1.f); transform->Scale = glm::vec3(20.f, 0.5f, 1.f);
std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(BottomWall); //std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(BottomWall);
sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; //sprite->SpriteFile = "Textures/Core/ErrorTexture.png";
std::shared_ptr<Components::RectangleShape> rectangleShape = m_World->AddComponent<Components::RectangleShape>(BottomWall); std::shared_ptr<Components::RectangleShape> rectangleShape = m_World->AddComponent<Components::RectangleShape>(BottomWall);
rectangleShape->Dimensions = glm::vec2(20.f, 0.5f); rectangleShape->Dimensions = glm::vec2(20.f, 0.5f);
std::shared_ptr<Components::Physics> physics = m_World->AddComponent<Components::Physics>(BottomWall); std::shared_ptr<Components::Physics> physics = m_World->AddComponent<Components::Physics>(BottomWall);
@@ -304,8 +304,8 @@ public:
transform->Position = glm::vec3(0.f, 6.f, -10.f); transform->Position = glm::vec3(0.f, 6.f, -10.f);
transform->Scale = glm::vec3(20.f, 0.5f, 1.f); transform->Scale = glm::vec3(20.f, 0.5f, 1.f);
std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(topWall); //std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(topWall);
sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; //sprite->SpriteFile = "Textures/Core/ErrorTexture.png";
std::shared_ptr<Components::RectangleShape> rectangleShape = m_World->AddComponent<Components::RectangleShape>(topWall); std::shared_ptr<Components::RectangleShape> rectangleShape = m_World->AddComponent<Components::RectangleShape>(topWall);
rectangleShape->Dimensions = glm::vec2(20.f, 0.5f); rectangleShape->Dimensions = glm::vec2(20.f, 0.5f);
@@ -326,8 +326,8 @@ public:
transform->Position = glm::vec3(-4.f, 1.f, -10.f); transform->Position = glm::vec3(-4.f, 1.f, -10.f);
transform->Scale = glm::vec3(0.5f, 20.f, 1.f); transform->Scale = glm::vec3(0.5f, 20.f, 1.f);
std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(leftWall); //std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(leftWall);
sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; //sprite->SpriteFile = "Textures/Core/ErrorTexture.png";
std::shared_ptr<Components::RectangleShape> rectangleShape = m_World->AddComponent<Components::RectangleShape>(leftWall); std::shared_ptr<Components::RectangleShape> rectangleShape = m_World->AddComponent<Components::RectangleShape>(leftWall);
rectangleShape->Dimensions = glm::vec2(0.5f, 20.f); rectangleShape->Dimensions = glm::vec2(0.5f, 20.f);
@@ -348,8 +348,8 @@ public:
transform->Position = glm::vec3(4.f, 1.f, -10.f); transform->Position = glm::vec3(4.f, 1.f, -10.f);
transform->Scale = glm::vec3(0.5f, 20.f, 1.f); transform->Scale = glm::vec3(0.5f, 20.f, 1.f);
std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(rightWall); //std::shared_ptr<Components::Sprite> sprite = m_World->AddComponent<Components::Sprite>(rightWall);
sprite->SpriteFile = "Textures/Core/ErrorTexture.png"; //sprite->SpriteFile = "Textures/Core/ErrorTexture.png";
std::shared_ptr<Components::RectangleShape> rectangleShape = m_World->AddComponent<Components::RectangleShape>(rightWall); std::shared_ptr<Components::RectangleShape> rectangleShape = m_World->AddComponent<Components::RectangleShape>(rightWall);
rectangleShape->Dimensions = glm::vec2(0.5f, 20.f); rectangleShape->Dimensions = glm::vec2(0.5f, 20.f);
@@ -568,28 +568,28 @@ public:
if (m_ScreenShake) { if (m_ScreenShake) {
m_ShakeTimer += dt; m_ShakeTimer += dt;
if (m_ShakeTimer >= m_ShakeEndTime) { if (m_ShakeTimer >= m_ShakeEndTime) {
m_ShakeRepresentativeIntensity -= m_ShakeRepresentativeIntensity * 0.1 * dt; std::cout << "Used: " << m_ShakeIntensity << " True: " << m_ShakeRepresentativeIntensity << std::endl;
m_ShakeRepresentativeIntensity -= m_ShakeRepresentativeIntensity * m_CoolerMultiplier * dt;
m_ShakeIntensity = m_ShakeRepresentativeIntensity; m_ShakeIntensity = m_ShakeRepresentativeIntensity;
if (m_ShakeRepresentativeIntensity < 0.1) { if (m_ShakeIntensity <= 0) {
m_ScreenShake = false; m_ScreenShake = false;
m_Renderer->PlaceCamera(glm::vec3(0, 0, 0)); m_Renderer->PlaceCamera(glm::vec3(0, 0, 0));
return; return;
} }
} else { } else {
std::cout << "Timer: " << m_ShakeTimer << " End: " << m_ShakeEndTime << std::endl; //std::cout << "Timer: " << m_ShakeTimer << " End: " << m_ShakeEndTime << std::endl;
} }
//float randomX = (rand() % m_ShakeIntensity); float randomX = (rand() % m_ShakeIntensity);
//float randomY = (rand() % m_ShakeIntensity); float randomY = (rand() % m_ShakeIntensity);
float randomX = 0;
float randomY = 0;
std::cout << "X: " << randomX << " Y: " << randomY << std::endl;
float half = m_ShakeIntensity / 2; float half = m_ShakeIntensity / 2;
//m_Renderer->PlaceCamera(glm::vec3(randomX - half, randomY - half, 0)); randomX = (randomX - half) / 20;
} else { randomY = (randomY - half) / 20;
//std::cout << "X: " << randomX << " Y: " << randomY << std::endl;
m_Renderer->PlaceCamera(glm::vec3(randomX, randomY, 0));
} }
} }
@@ -632,13 +632,18 @@ private:
float m_ShakeRepresentativeIntensity = 0; float m_ShakeRepresentativeIntensity = 0;
float m_ShakeTimer = 0; float m_ShakeTimer = 0;
float m_ShakeEndTime = 0; float m_ShakeEndTime = 0;
float m_TimeTakenToCoolDown = 0;
float m_CoolerMultiplier = 0;
dd::EventRelay<Engine, dd::Events::ScreenShake> m_EScreenShake; dd::EventRelay<Engine, dd::Events::ScreenShake> m_EScreenShake;
bool OnScreenShake(const dd::Events::ScreenShake &event) bool OnScreenShake(const dd::Events::ScreenShake &event)
{ {
m_ScreenShake = true; m_ScreenShake = true;
m_ShakeIntensity = event.Intensity; m_ShakeIntensity = event.Intensity;
m_ShakeRepresentativeIntensity = event.Intensity;
m_ShakeEndTime = event.Time; m_ShakeEndTime = event.Time;
m_ShakeTimer = 0; m_ShakeTimer = 0;
m_TimeTakenToCoolDown = event.TimeTakenToCoolDown;
m_CoolerMultiplier = m_ShakeIntensity / m_TimeTakenToCoolDown;
return true; return true;
} }
double m_LastTime; double m_LastTime;
+1
View File
@@ -17,6 +17,7 @@ struct ScreenShake : Event
{ {
float Time; float Time;
int Intensity; int Intensity;
float TimeTakenToCoolDown;
}; };
} }
+1
View File
@@ -224,6 +224,7 @@ bool dd::Systems::PadSystem::OnKeyDown(const dd::Events::KeyDown &event) {
Events::ScreenShake e; Events::ScreenShake e;
e.Intensity = 20; e.Intensity = 20;
e.Time = 3; e.Time = 3;
e.TimeTakenToCoolDown = 10;
EventBroker->Publish(e); EventBroker->Publish(e);
} else if (val == GLFW_KEY_Y) { } else if (val == GLFW_KEY_Y) {
Events::StickyPad e; Events::StickyPad e;