ScreenShake works as intended at the press of E and upon calling the event.
This commit is contained in:
+25
-20
@@ -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;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ struct ScreenShake : Event
|
|||||||
{
|
{
|
||||||
float Time;
|
float Time;
|
||||||
int Intensity;
|
int Intensity;
|
||||||
|
float TimeTakenToCoolDown;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user