diff --git a/resources/Schema/Entities/QualityAssurance.xml b/resources/Schema/Entities/QualityAssurance.xml
index b15e9309..cb75b7b3 100644
--- a/resources/Schema/Entities/QualityAssurance.xml
+++ b/resources/Schema/Entities/QualityAssurance.xml
@@ -40,7 +40,7 @@
-
+
@@ -188,7 +188,7 @@
-
+
@@ -683,7 +683,7 @@
-
+
@@ -730,7 +730,7 @@
-
+
@@ -790,7 +790,7 @@
-
+
@@ -837,7 +837,7 @@
-
+
@@ -883,7 +883,7 @@
-
+
@@ -930,7 +930,7 @@
-
+
@@ -977,7 +977,7 @@
-
+
@@ -1377,7 +1377,7 @@
-
+
@@ -1386,7 +1386,7 @@
true
- 0.7502397033169681
+ 0.75055150002244431
3.7999999523162842
true
@@ -1433,7 +1433,7 @@
-
+
@@ -1442,7 +1442,7 @@
- 1.2001454539310752
+ 1.2004572506365514
Models/Assault.mesh
@@ -1485,7 +1485,7 @@
-
+
@@ -1500,7 +1500,7 @@
true
- 0.68359123759100648
+ 0.68390303429648269
true
@@ -1581,6 +1581,7 @@
Models/Core/UnitCube.mesh
+
@@ -1690,6 +1691,7 @@
true
+ 0.0003117967054762083
3.7999999523162842
true
diff --git a/src/Engine/Rendering/RenderSystem.cpp b/src/Engine/Rendering/RenderSystem.cpp
index 9711cea1..623e7101 100644
--- a/src/Engine/Rendering/RenderSystem.cpp
+++ b/src/Engine/Rendering/RenderSystem.cpp
@@ -92,7 +92,9 @@ void RenderSystem::fillModels(RenderScene::Queues &Jobs)
}
glm::mat4 modelMatrix = Transform::ModelMatrix(cModel.EntityID, m_World);
+ //Loop through all materialgroups of a model
for (auto matGroup : model->MaterialGroups()) {
+ //If the model has an explosioneffect component, we will add an explosioneffectjob
if (m_World->HasComponent(cModel.EntityID, "ExplosionEffect")) {
auto explosionEffectComponent = m_World->GetComponent(cModel.EntityID, "ExplosionEffect");
std::shared_ptr explosionEffectJob = std::shared_ptr(new ExplosionEffectJob(
@@ -106,15 +108,30 @@ void RenderSystem::fillModels(RenderScene::Queues &Jobs)
fillColor,
fillPercentage
));
+ if (m_World->HasComponent(cModel.EntityID, "Shield")){
+ Jobs.ShieldObjects.push_back(explosionEffectJob);
+ } else if (m_World->HasComponent(cModel.EntityID, "Shielded")
+ || m_World->HasComponent(cModel.EntityID, "Player")) {
- if(explosionEffectJob->Color.a != 1.f || explosionEffectJob->EndColor.a != 1.f || explosionEffectJob->DiffuseColor.a != 1.f) {
- cModel["Transparent"] = true;
- }
+ if (explosionEffectJob->Color.a != 1.f || explosionEffectJob->EndColor.a != 1.f || explosionEffectJob->DiffuseColor.a != 1.f) {
+ cModel["Transparent"] = true;
+ }
- if (cModel["Transparent"]) {
- Jobs.TransparentObjects.push_back(explosionEffectJob);
+ if (cModel["Transparent"]) {
+ Jobs.TransparentShieldedObjects.push_back(explosionEffectJob);
+ } else {
+ Jobs.OpaqueShieldedObjects.push_back(explosionEffectJob);
+ }
} else {
- Jobs.OpaqueObjects.push_back(explosionEffectJob);
+ if (explosionEffectJob->Color.a != 1.f || explosionEffectJob->EndColor.a != 1.f || explosionEffectJob->DiffuseColor.a != 1.f) {
+ cModel["Transparent"] = true;
+ }
+
+ if (cModel["Transparent"]) {
+ Jobs.TransparentObjects.push_back(explosionEffectJob);
+ } else {
+ Jobs.OpaqueObjects.push_back(explosionEffectJob);
+ }
}
} else {
std::shared_ptr modelJob = std::shared_ptr(new ModelJob(
@@ -127,13 +144,30 @@ void RenderSystem::fillModels(RenderScene::Queues &Jobs)
fillColor,
fillPercentage
));
- if (modelJob->Color.a != 1.f || modelJob->DiffuseColor.a != 1.f) {
- cModel["Transparent"] = true;
- }
- if (cModel["Transparent"]) {
- Jobs.TransparentObjects.push_back(modelJob);
+ if (m_World->HasComponent(cModel.EntityID, "Shield")) {
+ Jobs.ShieldObjects.push_back(modelJob);
+ } else if (m_World->HasComponent(cModel.EntityID, "Shielded")
+ || m_World->HasComponent(cModel.EntityID, "Player")) {
+
+ if (modelJob->Color.a != 1.f || modelJob->DiffuseColor.a != 1.f) {
+ cModel["Transparent"] = true;
+ }
+
+ if (cModel["Transparent"]) {
+ Jobs.TransparentShieldedObjects.push_back(modelJob);
+ } else {
+ Jobs.OpaqueShieldedObjects.push_back(modelJob);
+ }
} else {
- Jobs.OpaqueObjects.push_back(modelJob);
+ if (modelJob->Color.a != 1.f || modelJob->DiffuseColor.a != 1.f) {
+ cModel["Transparent"] = true;
+ }
+
+ if (cModel["Transparent"]) {
+ Jobs.TransparentObjects.push_back(modelJob);
+ } else {
+ Jobs.OpaqueObjects.push_back(modelJob);
+ }
}
}
}