diff --git a/assets b/assets index 588da9c..78ba667 160000 --- a/assets +++ b/assets @@ -1 +1 @@ -Subproject commit 588da9ca0d0e6a3dd08f4373e03468f79082b359 +Subproject commit 78ba667b37a553c8387bc2717032c284dbd14aa9 diff --git a/src/Renderer.cpp b/src/Renderer.cpp index fd0eca3..933780b 100755 --- a/src/Renderer.cpp +++ b/src/Renderer.cpp @@ -531,21 +531,9 @@ void Renderer::ForwardRendering(RenderQueue &rq) if (spriteJob) { glm::mat4 modelMatrix = spriteJob->ModelMatrix; - MVP = cameraMatrix * modelMatrix * glm::inverse(glm::toMat4(glm::inverse(m_Camera->Orientation()))); + glm::mat4 billboardingMatrix = glm::inverse(glm::toMat4(glm::inverse(m_Camera->Orientation()))); + MVP = cameraMatrix * modelMatrix * billboardingMatrix; - - //auto spriteComponent = m_World->GetComponent(entity); - //if (transformComponent && spriteComponent) - //{ - // //TEMP - // Texture* texture = m_World->ResourceManager->Load("Texture", spriteComponent->SpriteFile); - // //glBindTexture(GL_TEXTURE_2D, texture); - // auto transform = m_World->GetComponent(spriteComponent->Entity); - // glm::quat orientation2D = glm::angleAxis(glm::eulerAngles(transform->Orientation).z, glm::vec3(0, 0, -1)); - // m_Renderer->AddTextureToDraw(texture, transform->Position, orientation2D, transform->Scale); - //} - - glUniformMatrix4fv(glGetUniformLocation(ShaderProgramHandle, "MVP"), 1, GL_FALSE, glm::value_ptr(glm::mat4(MVP))); glUniformMatrix4fv(glGetUniformLocation(ShaderProgramHandle, "M"), 1, GL_FALSE, glm::value_ptr(glm::mat4(modelMatrix))); glUniformMatrix4fv(glGetUniformLocation(ShaderProgramHandle, "V"), 1, GL_FALSE, glm::value_ptr(glm::mat4(m_Camera->ViewMatrix()))); diff --git a/src/Systems/TankSteeringSystem.cpp b/src/Systems/TankSteeringSystem.cpp index 4034939..e6f301c 100644 --- a/src/Systems/TankSteeringSystem.cpp +++ b/src/Systems/TankSteeringSystem.cpp @@ -90,17 +90,48 @@ void Systems::TankSteeringSystem::UpdateEntity(double dt, EntityID entity, Entit auto cloneTransform = m_World->GetComponent(clone); cloneTransform->Position = templateAbsoluteTransform.Position; cloneTransform->Orientation = absoluteTransform.Orientation * cloneTransform->Orientation; + Events::SetVelocity eSetVelocity; eSetVelocity.Entity = clone; eSetVelocity.Velocity = tankTransform->Velocity + absoluteTransform.Orientation * (glm::vec3(0.f, 0.f, -1.f) * barrelSteeringComponent->ShotSpeed); EventBroker->Publish(eSetVelocity); m_TimeSinceLastShot[tankSteeringComponent->Barrel] = 0; - Events::PlaySFX e; - e.Resource = "Sounds/SFX/TankShot.mp3"; - e.Position = absoluteTransform.Position; - e.Loop = false; - EventBroker->Publish(e); + { + Events::CreateExplosion e; + e.LifeTime = 1.5; + e.ParticleScale.push_back(0.6); + e.ParticleScale.push_back(1.8); + e.ParticlesToSpawn = 5; + e.Position = cloneTransform->Position; + e.RelativeUpOrientation = glm::angleAxis(glm::pi() / 2, glm::vec3(1,0,0)); + e.Speed = 1.7; + e.SpreadAngle = glm::pi()/10; + e.spritePath = "Textures/Sprites/Smoke1.png"; + e.Color = glm::vec4(0.6,0.6,0.6,1); + EventBroker->Publish(e); + } + { + Events::CreateExplosion e; + e.LifeTime = 0.2; + e.ParticleScale.push_back(1); + //e.ParticleScale.push_back(2); + e.ParticlesToSpawn = 1; + e.Position = cloneTransform->Position; + e.Speed = 0; + e.SpreadAngle = glm::pi(); + e.spritePath = "Textures/Sprites/MuzzleFlash.png"; + e.Color = glm::vec4(2, 2, 2, 0.2); + EventBroker->Publish(e); + } + + { +// Events::PlaySFX e; +// e.Resource = "Sounds/SFX/TankShot.mp3"; +// e.Position = absoluteTransform.Position; +// e.Loop = false; +// EventBroker->Publish(e); + } auto clonePhysicsComponent = m_World->GetComponent(clone); //1,670m/s @@ -194,11 +225,11 @@ bool Systems::TankSteeringSystem::OnCollision(const Events::Collision &e) EventBroker->Publish(e); } { - Events::PlaySFX e; - e.MinDistance = 150.f; - e.Position = shellTransform->Position; - e.Resource = "Sounds/SFX/Explosion.wav"; - EventBroker->Publish(e); +// Events::PlaySFX e; +// e.MinDistance = 150.f; +// e.Position = shellTransform->Position; +// e.Resource = "Sounds/SFX/Explosion.wav"; +// EventBroker->Publish(e); } for (auto &physComponent : *physicsComponents)