Rename the thingie
This commit is contained in:
@@ -31,7 +31,7 @@ private:
|
|||||||
|
|
||||||
ShaderProgram* m_BasicForwardProgram;
|
ShaderProgram* m_BasicForwardProgram;
|
||||||
|
|
||||||
ShaderProgram* m_CoolDeathAnimProgram;
|
ShaderProgram* m_ExplosionEffectProgram;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -64,7 +64,7 @@ struct ModelJob : RenderJob
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Cool Death Animation
|
// Cool Death Animation
|
||||||
struct CoolDeathAnimationJob : ModelJob
|
struct ExplosionEffectJob : ModelJob
|
||||||
{
|
{
|
||||||
glm::vec3 ExplosionOrigin;
|
glm::vec3 ExplosionOrigin;
|
||||||
double TimeSinceDeath = 0.f; //Seconds
|
double TimeSinceDeath = 0.f; //Seconds
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ private:
|
|||||||
void FillModels(World* world, RenderQueue* renderQueue);
|
void FillModels(World* world, RenderQueue* renderQueue);
|
||||||
void FillLights(World* world, RenderQueue* renderQueue);
|
void FillLights(World* world, RenderQueue* renderQueue);
|
||||||
|
|
||||||
void FillCoolDeathAnim(World* world, RenderQueue* renderQueue);
|
void FillExplosionEffect(World* world, RenderQueue* renderQueue);
|
||||||
|
|
||||||
glm::mat4 ModelMatrix(World* world, EntityID entity);
|
glm::mat4 ModelMatrix(World* world, EntityID entity);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ private:
|
|||||||
ShaderProgram* m_CalculateFrustumProgram;
|
ShaderProgram* m_CalculateFrustumProgram;
|
||||||
ShaderProgram* m_LightCullProgram;
|
ShaderProgram* m_LightCullProgram;
|
||||||
|
|
||||||
ShaderProgram* m_CoolDeathAnimProgram;
|
ShaderProgram* m_ExplosionEffectProgram;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Core/System.h"
|
#include "Core/System.h"
|
||||||
|
|
||||||
class CoolDeathAnimationSystem : public PureSystem
|
class ExplosionEffectSystem : public PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CoolDeathAnimationSystem(EventBroker* eventBroker)
|
ExplosionEffectSystem(EventBroker* eventBroker)
|
||||||
: PureSystem(eventBroker, "CoolDeathAnim")
|
: PureSystem(eventBroker, "ExplosionEffect")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
virtual void UpdateComponent(World* world, ComponentWrapper& object, double dt) override
|
virtual void UpdateComponent(World* world, ComponentWrapper& object, double dt) override
|
||||||
{
|
{
|
||||||
ComponentWrapper& Component = world->GetComponent(object.EntityID, "CoolDeathAnim");
|
ComponentWrapper& Component = world->GetComponent(object.EntityID, "ExplosionEffect");
|
||||||
|
|
||||||
if ((double)Component["TimeSinceDeath"] > (double)Component["ExplosionDuration"]) {
|
if ((double)Component["TimeSinceDeath"] > (double)Component["ExplosionDuration"]) {
|
||||||
(double)Component["TimeSinceDeath"] = 0.f;
|
(double)Component["TimeSinceDeath"] = 0.f;
|
||||||
+1
-1
@@ -16,7 +16,7 @@
|
|||||||
#include "Core/EntityXMLFile.h"
|
#include "Core/EntityXMLFile.h"
|
||||||
#include "Core/SystemPipeline.h"
|
#include "Core/SystemPipeline.h"
|
||||||
#include "RaptorCopterSystem.h"
|
#include "RaptorCopterSystem.h"
|
||||||
#include "CoolDeathAnimationSystem.h"
|
#include "ExplosionEffectSystem.h"
|
||||||
#include "PlayerSystem.h"
|
#include "PlayerSystem.h"
|
||||||
#include "Editor/EditorSystem.h"
|
#include "Editor/EditorSystem.h"
|
||||||
|
|
||||||
|
|||||||
@@ -8,5 +8,5 @@
|
|||||||
<xs:include schemaLocation="Components/Player.xsd"/>
|
<xs:include schemaLocation="Components/Player.xsd"/>
|
||||||
<xs:include schemaLocation="Components/AABB.xsd"/>
|
<xs:include schemaLocation="Components/AABB.xsd"/>
|
||||||
<xs:include schemaLocation="Components/Trigger.xsd"/>
|
<xs:include schemaLocation="Components/Trigger.xsd"/>
|
||||||
<xs:include schemaLocation="Components/CoolDeathAnim.xsd"/>
|
<xs:include schemaLocation="Components/ExplosionEffect.xsd"/>
|
||||||
</xs:schema>
|
</xs:schema>
|
||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
<c:CoolDeathAnim>
|
<c:ExplosionEffect>
|
||||||
<ExplosionOrigin X="0" Y="0" Z="0"/>
|
<ExplosionOrigin X="0" Y="0" Z="0"/>
|
||||||
<TimeSinceDeath>0</TimeSinceDeath>
|
<TimeSinceDeath>0</TimeSinceDeath>
|
||||||
<ExplosionDuration>2</ExplosionDuration>
|
<ExplosionDuration>2</ExplosionDuration>
|
||||||
@@ -13,4 +13,4 @@
|
|||||||
<!--<ReverseAnimation>0</ReverseAnimation>-->
|
<!--<ReverseAnimation>0</ReverseAnimation>-->
|
||||||
<!--<Wireframe>0</Wireframe>-->
|
<!--<Wireframe>0</Wireframe>-->
|
||||||
<ExponentialAccelaration>0</ExponentialAccelaration>
|
<ExponentialAccelaration>0</ExponentialAccelaration>
|
||||||
</c:CoolDeathAnim>
|
</c:ExplosionEffect>
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:t="types">
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:t="types">
|
||||||
<xs:import schemaLocation="../Types.xsd" namespace="types"/>
|
<xs:import schemaLocation="../Types.xsd" namespace="types"/>
|
||||||
|
|
||||||
<xs:element name="CoolDeathAnim">
|
<xs:element name="ExplosionEffect">
|
||||||
<xs:annotation>
|
<xs:annotation>
|
||||||
<xs:documentation>A component that trigger the death effect</xs:documentation>
|
<xs:documentation>A component that trigger the death effect</xs:documentation>
|
||||||
</xs:annotation>
|
</xs:annotation>
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
<Resource>Models/Core/UnitRaptor.obj</Resource>
|
<Resource>Models/Core/UnitRaptor.obj</Resource>
|
||||||
<Color R="1" G="0.4" B="0.8"/>
|
<Color R="1" G="0.4" B="0.8"/>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:CoolDeathAnim>
|
<c:ExplosionEffect>
|
||||||
<ExplosionOrigin X="0" Y="0" Z="0"/>
|
<ExplosionOrigin X="0" Y="0" Z="0"/>
|
||||||
<TimeSinceDeath>0</TimeSinceDeath>
|
<TimeSinceDeath>0</TimeSinceDeath>
|
||||||
<ExplosionDuration>2</ExplosionDuration>
|
<ExplosionDuration>2</ExplosionDuration>
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
<!--<ReverseAnimation>0</ReverseAnimation>-->
|
<!--<ReverseAnimation>0</ReverseAnimation>-->
|
||||||
<!--<Wireframe>0</Wireframe>-->
|
<!--<Wireframe>0</Wireframe>-->
|
||||||
<ExponentialAccelaration>0</ExponentialAccelaration>
|
<ExponentialAccelaration>0</ExponentialAccelaration>
|
||||||
</c:CoolDeathAnim>
|
</c:ExplosionEffect>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
<Entity>
|
<Entity>
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ void DrawScenePass::InitializeShaderPrograms()
|
|||||||
m_BasicForwardProgram->Compile();
|
m_BasicForwardProgram->Compile();
|
||||||
m_BasicForwardProgram->Link();
|
m_BasicForwardProgram->Link();
|
||||||
|
|
||||||
m_CoolDeathAnimProgram = ResourceManager::Load<ShaderProgram>("#CoolDeathAnimProgram");
|
m_ExplosionEffectProgram = ResourceManager::Load<ShaderProgram>("#ExplosionEffectProgram");
|
||||||
m_CoolDeathAnimProgram->AddShader(std::shared_ptr<Shader>(new VertexShader("Shaders/CoolDeathAnim.vert.glsl")));
|
m_ExplosionEffectProgram->AddShader(std::shared_ptr<Shader>(new VertexShader("Shaders/ExplosionEffect.vert.glsl")));
|
||||||
m_CoolDeathAnimProgram->AddShader(std::shared_ptr<Shader>(new GeometryShader("Shaders/CoolDeathAnim.geom.glsl")));
|
m_ExplosionEffectProgram->AddShader(std::shared_ptr<Shader>(new GeometryShader("Shaders/ExplosionEffect.geom.glsl")));
|
||||||
m_CoolDeathAnimProgram->AddShader(std::shared_ptr<Shader>(new FragmentShader("Shaders/CoolDeathAnim.frag.glsl")));
|
m_ExplosionEffectProgram->AddShader(std::shared_ptr<Shader>(new FragmentShader("Shaders/ExplosionEffect.frag.glsl")));
|
||||||
m_CoolDeathAnimProgram->Compile();
|
m_ExplosionEffectProgram->Compile();
|
||||||
m_CoolDeathAnimProgram->Link();
|
m_ExplosionEffectProgram->Link();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,46 +41,46 @@ void DrawScenePass::Draw(RenderQueueCollection& rq)
|
|||||||
|
|
||||||
//TODO: Render: Add code for more jobs than modeljobs.
|
//TODO: Render: Add code for more jobs than modeljobs.
|
||||||
for (auto &job : rq.Forward) {
|
for (auto &job : rq.Forward) {
|
||||||
auto coolDeathAnimationJob = std::dynamic_pointer_cast<CoolDeathAnimationJob>(job);
|
auto explosionEffectJob = std::dynamic_pointer_cast<ExplosionEffectJob>(job);
|
||||||
if (coolDeathAnimationJob) {
|
if (explosionEffectJob) {
|
||||||
GLuint ShaderHandle = m_CoolDeathAnimProgram->GetHandle(); //---
|
GLuint ShaderHandle = m_ExplosionEffectProgram->GetHandle(); //---
|
||||||
|
|
||||||
m_CoolDeathAnimProgram->Bind();
|
m_ExplosionEffectProgram->Bind();
|
||||||
//TODO: Kolla upp "header/include/common" shader saken så man slipper skicka in asmycket uniforms
|
//TODO: Kolla upp "header/include/common" shader saken så man slipper skicka in asmycket uniforms
|
||||||
glUniformMatrix4fv(glGetUniformLocation(ShaderHandle, "M"), 1, GL_FALSE, glm::value_ptr(coolDeathAnimationJob->ModelMatrix));
|
glUniformMatrix4fv(glGetUniformLocation(ShaderHandle, "M"), 1, GL_FALSE, glm::value_ptr(explosionEffectJob->ModelMatrix));
|
||||||
glUniformMatrix4fv(glGetUniformLocation(ShaderHandle, "V"), 1, GL_FALSE, glm::value_ptr(m_Renderer->Camera()->ViewMatrix()));
|
glUniformMatrix4fv(glGetUniformLocation(ShaderHandle, "V"), 1, GL_FALSE, glm::value_ptr(m_Renderer->Camera()->ViewMatrix()));
|
||||||
glUniformMatrix4fv(glGetUniformLocation(ShaderHandle, "P"), 1, GL_FALSE, glm::value_ptr(m_Renderer->Camera()->ProjectionMatrix()));
|
glUniformMatrix4fv(glGetUniformLocation(ShaderHandle, "P"), 1, GL_FALSE, glm::value_ptr(m_Renderer->Camera()->ProjectionMatrix()));
|
||||||
glUniform4fv(glGetUniformLocation(ShaderHandle, "Color"), 1, glm::value_ptr(coolDeathAnimationJob->Color));
|
glUniform4fv(glGetUniformLocation(ShaderHandle, "Color"), 1, glm::value_ptr(explosionEffectJob->Color));
|
||||||
glUniform3fv(glGetUniformLocation(ShaderHandle, "ExplosionOrigin"), 1, glm::value_ptr(coolDeathAnimationJob->ExplosionOrigin));
|
glUniform3fv(glGetUniformLocation(ShaderHandle, "ExplosionOrigin"), 1, glm::value_ptr(explosionEffectJob->ExplosionOrigin));
|
||||||
glUniform1f(glGetUniformLocation(ShaderHandle, "TimeSinceDeath"), coolDeathAnimationJob->TimeSinceDeath);
|
glUniform1f(glGetUniformLocation(ShaderHandle, "TimeSinceDeath"), explosionEffectJob->TimeSinceDeath);
|
||||||
glUniform1f(glGetUniformLocation(ShaderHandle, "ExplosionDuration"), coolDeathAnimationJob->ExplosionDuration);
|
glUniform1f(glGetUniformLocation(ShaderHandle, "ExplosionDuration"), explosionEffectJob->ExplosionDuration);
|
||||||
//glUniform1i(glGetUniformLocation(ShaderHandle, "Gravity"), coolDeathAnimationJob->Gravity);
|
//glUniform1i(glGetUniformLocation(ShaderHandle, "Gravity"), explosionEffectJob->Gravity);
|
||||||
//glUniform1f(glGetUniformLocation(ShaderHandle, "GravityForce"), coolDeathAnimationJob->GravityForce);
|
//glUniform1f(glGetUniformLocation(ShaderHandle, "GravityForce"), explosionEffectJob->GravityForce);
|
||||||
//glUniform1f(glGetUniformLocation(ShaderHandle, "ObjectRadius"), coolDeathAnimationJob->ObjectRadius);
|
//glUniform1f(glGetUniformLocation(ShaderHandle, "ObjectRadius"), explosionEffectJob->ObjectRadius);
|
||||||
glUniform4fv(glGetUniformLocation(ShaderHandle, "EndColor"), 1, glm::value_ptr(coolDeathAnimationJob->EndColor));
|
glUniform4fv(glGetUniformLocation(ShaderHandle, "EndColor"), 1, glm::value_ptr(explosionEffectJob->EndColor));
|
||||||
glUniform1i(glGetUniformLocation(ShaderHandle, "Randomness"), coolDeathAnimationJob->Randomness);
|
glUniform1i(glGetUniformLocation(ShaderHandle, "Randomness"), explosionEffectJob->Randomness);
|
||||||
glUniform1fv(glGetUniformLocation(ShaderHandle, "RandomNumbers"), 20, coolDeathAnimationJob->RandomNumbers.data());
|
glUniform1fv(glGetUniformLocation(ShaderHandle, "RandomNumbers"), 20, explosionEffectJob->RandomNumbers.data());
|
||||||
glUniform1f(glGetUniformLocation(ShaderHandle, "RandomnessScalar"), coolDeathAnimationJob->RandomnessScalar);
|
glUniform1f(glGetUniformLocation(ShaderHandle, "RandomnessScalar"), explosionEffectJob->RandomnessScalar);
|
||||||
glUniform2fv(glGetUniformLocation(ShaderHandle, "Velocity"), 1, glm::value_ptr(coolDeathAnimationJob->Velocity));
|
glUniform2fv(glGetUniformLocation(ShaderHandle, "Velocity"), 1, glm::value_ptr(explosionEffectJob->Velocity));
|
||||||
glUniform1i(glGetUniformLocation(ShaderHandle, "ColorByDistance"), coolDeathAnimationJob->ColorByDistance);
|
glUniform1i(glGetUniformLocation(ShaderHandle, "ColorByDistance"), explosionEffectJob->ColorByDistance);
|
||||||
//glUniform1i(glGetUniformLocation(ShaderHandle, "ReverseAnimation"), coolDeathAnimationJob->ReverseAnimation);
|
//glUniform1i(glGetUniformLocation(ShaderHandle, "ReverseAnimation"), explosionEffectJob->ReverseAnimation);
|
||||||
//glUniform1i(glGetUniformLocation(ShaderHandle, "Wireframe"), coolDeathAnimationJob->Wireframe);
|
//glUniform1i(glGetUniformLocation(ShaderHandle, "Wireframe"), explosionEffectJob->Wireframe);
|
||||||
glUniform1i(glGetUniformLocation(ShaderHandle, "ExponentialAccelaration"), coolDeathAnimationJob->ExponentialAccelaration);
|
glUniform1i(glGetUniformLocation(ShaderHandle, "ExponentialAccelaration"), explosionEffectJob->ExponentialAccelaration);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//TODO: Renderer: bättre textur felhantering samt fler texturer stöd
|
//TODO: Renderer: bättre textur felhantering samt fler texturer stöd
|
||||||
if (coolDeathAnimationJob->DiffuseTexture != nullptr) {
|
if (explosionEffectJob->DiffuseTexture != nullptr) {
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
glBindTexture(GL_TEXTURE_2D, coolDeathAnimationJob->DiffuseTexture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, explosionEffectJob->DiffuseTexture->m_Texture);
|
||||||
} else {
|
} else {
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
glBindTexture(GL_TEXTURE_2D, m_WhiteTexture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, m_WhiteTexture->m_Texture);
|
||||||
}
|
}
|
||||||
glBindVertexArray(coolDeathAnimationJob->Model->VAO);
|
glBindVertexArray(explosionEffectJob->Model->VAO);
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, coolDeathAnimationJob->Model->ElementBuffer);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, explosionEffectJob->Model->ElementBuffer);
|
||||||
glDrawElementsBaseVertex(GL_TRIANGLES, coolDeathAnimationJob->EndIndex - coolDeathAnimationJob->StartIndex + 1, GL_UNSIGNED_INT, 0, coolDeathAnimationJob->StartIndex);
|
glDrawElementsBaseVertex(GL_TRIANGLES, explosionEffectJob->EndIndex - explosionEffectJob->StartIndex + 1, GL_UNSIGNED_INT, 0, explosionEffectJob->StartIndex);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ void RenderQueueFactory::FillModels(World* world, RenderQueue* renderQueue)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (auto texGroup : model->TextureGroups) {
|
for (auto texGroup : model->TextureGroups) {
|
||||||
bool hasDeathComp = world->HasComponent(modelC.EntityID, "CoolDeathAnim");
|
bool hasDeathComp = world->HasComponent(modelC.EntityID, "ExplosionEffect");
|
||||||
if (!hasDeathComp) {
|
if (!hasDeathComp) {
|
||||||
ModelJob job;
|
ModelJob job;
|
||||||
|
|
||||||
@@ -110,9 +110,9 @@ void RenderQueueFactory::FillModels(World* world, RenderQueue* renderQueue)
|
|||||||
renderQueue->Add(job);
|
renderQueue->Add(job);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
CoolDeathAnimationJob job;
|
ExplosionEffectJob job;
|
||||||
|
|
||||||
auto deathComp = world->GetComponent(modelC.EntityID, "CoolDeathAnim");
|
auto deathComp = world->GetComponent(modelC.EntityID, "ExplosionEffect");
|
||||||
|
|
||||||
job.ExplosionOrigin = (glm::vec3)deathComp["ExplosionOrigin"];
|
job.ExplosionOrigin = (glm::vec3)deathComp["ExplosionOrigin"];
|
||||||
job.TimeSinceDeath = (double)deathComp["TimeSinceDeath"];
|
job.TimeSinceDeath = (double)deathComp["TimeSinceDeath"];
|
||||||
|
|||||||
@@ -76,12 +76,12 @@ void Renderer::InitializeShaders()
|
|||||||
m_DrawScreenQuadProgram->Compile();
|
m_DrawScreenQuadProgram->Compile();
|
||||||
m_DrawScreenQuadProgram->Link();
|
m_DrawScreenQuadProgram->Link();
|
||||||
|
|
||||||
m_CoolDeathAnimProgram = ResourceManager::Load<ShaderProgram>("#CoolDeathAnimProgram");
|
m_ExplosionEffectProgram = ResourceManager::Load<ShaderProgram>("#ExplosionEffectProgram");
|
||||||
//m_CoolDeathAnimProgram->AddShader(std::shared_ptr<Shader>(new VertexShader("Shaders/CoolDeathAnim.vert.glsl")));
|
//m_ExplosionEffectProgram->AddShader(std::shared_ptr<Shader>(new VertexShader("Shaders/ExplosionEffect.vert.glsl")));
|
||||||
//m_CoolDeathAnimProgram->AddShader(std::shared_ptr<Shader>(new GeometryShader("Shaders/CoolDeathAnim.geom.glsl")));
|
//m_ExplosionEffectProgram->AddShader(std::shared_ptr<Shader>(new GeometryShader("Shaders/ExplosionEffect.geom.glsl")));
|
||||||
//m_CoolDeathAnimProgram->AddShader(std::shared_ptr<Shader>(new FragmentShader("Shaders/CoolDeathAnim.frag.glsl")));
|
//m_ExplosionEffectProgram->AddShader(std::shared_ptr<Shader>(new FragmentShader("Shaders/ExplosionEffect.frag.glsl")));
|
||||||
//m_CoolDeathAnimProgram->Compile();
|
//m_ExplosionEffectProgram->Compile();
|
||||||
//m_CoolDeathAnimProgram->Link();
|
//m_ExplosionEffectProgram->Link();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -57,7 +57,7 @@ Game::Game(int argc, char* argv[])
|
|||||||
m_SystemPipeline->AddSystem<EditorSystem>(m_Renderer);
|
m_SystemPipeline->AddSystem<EditorSystem>(m_Renderer);
|
||||||
m_SystemPipeline->AddSystem<CollisionSystem>();
|
m_SystemPipeline->AddSystem<CollisionSystem>();
|
||||||
m_SystemPipeline->AddSystem<TriggerSystem>();
|
m_SystemPipeline->AddSystem<TriggerSystem>();
|
||||||
m_SystemPipeline->AddSystem<CoolDeathAnimationSystem>();
|
m_SystemPipeline->AddSystem<ExplosionEffectSystem>();
|
||||||
|
|
||||||
// Invoke network
|
// Invoke network
|
||||||
if (m_Config->Get<bool>("Networking.StartNetwork", false)) {
|
if (m_Config->Get<bool>("Networking.StartNetwork", false)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user