diff --git a/Escape-the-Dawn/GameWorld.cpp b/Escape-the-Dawn/GameWorld.cpp index ce080cc..e0c2fd4 100644 --- a/Escape-the-Dawn/GameWorld.cpp +++ b/Escape-the-Dawn/GameWorld.cpp @@ -93,8 +93,26 @@ void GameWorld::Initialize() bounds = AddComponent(m_Player, "Bounds"); bounds->Origin = glm::vec3(0, 0, 2.f); bounds->VolumeVector = glm::vec3(2.7f, 0.7f, 1); - soundEmitter = AddComponent(m_Player, "SoundEmitter"); - soundEmitter->Gain = 2.5f; + // Sound Emitter PowerUp + auto soundPowerUp = CreateEntity(m_Player); + { + AddComponent(soundPowerUp, "Transform"); + soundEmitter = AddComponent(soundPowerUp, "SoundEmitter"); + soundEmitter->Gain = 2.5f; + SetProperty(m_Player, "SoundEmitterPowerUp", soundEmitter.get()); + } + // Sound Emitter PowerUp + auto soundEngine = CreateEntity(m_Player); + { + AddComponent(soundEngine, "Transform"); + soundEmitter = AddComponent(soundEngine, "SoundEmitter"); + soundEmitter->Gain = 1.5f; + soundEmitter->Path = "Sounds/engine.wav"; + soundEmitter->Loop = true; + auto soundSystem = GetSystem("SoundSystem"); + soundSystem->PlaySound(soundEmitter.get(), "Sounds/engine.wav"); + SetProperty(m_Player, "SoundEmitterEngine", soundEmitter.get()); + } // Player light auto playerLight = CreateEntity(m_Player); SetProperty(m_Player, "LightLeft", playerLight); @@ -134,6 +152,7 @@ void GameWorld::Initialize() pointLight->spotExponent = 0.0f; bounds = AddComponent(playerLight, "Bounds"); bounds->VolumeVector = glm::vec3(0.5f); + // Player sound /*ent = CreateEntity(); transform = AddComponent(ent, "Transform"); diff --git a/Escape-the-Dawn/Sounds/engine.wav b/Escape-the-Dawn/Sounds/engine.wav new file mode 100644 index 0000000..74785ac Binary files /dev/null and b/Escape-the-Dawn/Sounds/engine.wav differ diff --git a/Escape-the-Dawn/Systems/PlayerSystem.cpp b/Escape-the-Dawn/Systems/PlayerSystem.cpp index ca58d58..974ccaf 100644 --- a/Escape-the-Dawn/Systems/PlayerSystem.cpp +++ b/Escape-the-Dawn/Systems/PlayerSystem.cpp @@ -131,8 +131,6 @@ void Systems::PlayerSystem::UpdateEntity(double dt, EntityID entity, EntityID pa m_PlayerOriginalBounds = bounds->VolumeVector; } - auto soundEmitter = m_World->GetComponent(entity, "SoundEmitter"); - glm::vec3 Ship_Right = glm::vec3(glm::vec4(1, 0, 0, 0)); glm::vec3 Ship_Forward = glm::vec3(glm::vec4(0, 0, 1, 0)); @@ -244,8 +242,9 @@ void Systems::PlayerSystem::UpdateEntity(double dt, EntityID entity, EntityID pa m_poweruptimeleft = powerupComp->Duration; m_World->RemoveEntity(ent); SetPlayerLightColor(entity, glm::vec3(0.0, 1.0, 0.0)); + auto soundEmitterPU = m_World->GetProperty(entity, "SoundEmitterPowerUp"); auto soundSystem = m_World->GetSystem("SoundSystem"); - soundSystem->PlaySound(soundEmitter, "Sounds/boom.wav"); + soundSystem->PlaySound(soundEmitterPU, "Sounds/boom.wav"); } } @@ -269,6 +268,8 @@ void Systems::PlayerSystem::UpdateEntity(double dt, EntityID entity, EntityID pa float percentage = m_poweruptimeleft / m_PowerUpTotalDuration; SetPlayerLightColor(entity, glm::vec3(0.0, 1.0, 0.0) * percentage + (1.f - percentage) * glm::vec3(0.05f, 0.36f, 1.f)); + auto soundEmitterEngine = m_World->GetProperty(entity, "SoundEmitterEngine"); + soundEmitterEngine->Pitch = 1.f + percentage * 0.5f; // Update camera if(! freecamEnabled)