diff --git a/resources/Schema/Components/ExplosionEffect.xml b/resources/Schema/Components/ExplosionEffect.xml
index 22692729..0b4a44c4 100644
--- a/resources/Schema/Components/ExplosionEffect.xml
+++ b/resources/Schema/Components/ExplosionEffect.xml
@@ -3,6 +3,8 @@
0
2
+ 1
+ 0
diff --git a/resources/Schema/Components/ExplosionEffect.xsd b/resources/Schema/Components/ExplosionEffect.xsd
index cdde5e52..bd29b2ed 100644
--- a/resources/Schema/Components/ExplosionEffect.xsd
+++ b/resources/Schema/Components/ExplosionEffect.xsd
@@ -18,6 +18,8 @@
How many seconds the death animation should be
+
+
diff --git a/src/Game/Systems/ExplosionEffectSystem.cpp b/src/Game/Systems/ExplosionEffectSystem.cpp
index 2704d2da..71de192a 100644
--- a/src/Game/Systems/ExplosionEffectSystem.cpp
+++ b/src/Game/Systems/ExplosionEffectSystem.cpp
@@ -2,13 +2,17 @@
void ExplosionEffectSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt)
{
- if ((double)component["TimeSinceDeath"] > (double)component["ExplosionDuration"]) {
- (double)component["TimeSinceDeath"] = 0.f;
+ double& delay = (double)component["Delay"];
+ if (delay > 0) {
+ delay = std::max(0.0, delay - dt);
}
- (double&)component["TimeSinceDeath"] += dt;
- //if ((bool)Component["Gravity"] == true) {
- // (bool)Component["ExponentialAccelaration"] = false;
- //}
+ if (delay <= 0) {
+ double& timeSinceDeath = component["TimeSinceDeath"];
+ timeSinceDeath += (double)component["Speed"] * dt;
+ if (timeSinceDeath < 0 || timeSinceDeath > (double)component["ExplosionDuration"]) {
+ timeSinceDeath = 0.0;
+ }
+ }
}