diff --git a/resources/config/spark_config.json b/resources/config/spark_config.json index d7ec09e..e0e2e69 100644 --- a/resources/config/spark_config.json +++ b/resources/config/spark_config.json @@ -1,5 +1,5 @@ { - "emissionRate": 10.0, + "emissionRate": 100, "maxParticles": 200, "particleSize": 0.3, "biasX": 0.3, diff --git a/src/Space.cpp b/src/Space.cpp index 80b69e2..de6ed73 100644 --- a/src/Space.cpp +++ b/src/Space.cpp @@ -311,6 +311,9 @@ namespace ZL bool cfgLoaded = sparkEmitter.loadFromJsonFile("resources/config/spark_config.json", renderer, CONST_ZIP_FILE); bool cfgLoaded2 = sparkEmitterCargo.loadFromJsonFile("resources/config/spark_config_cargo.json", renderer, CONST_ZIP_FILE); + sparkEmitter.setIsActive(false); + sparkEmitterCargo.setIsActive(false); + bool projCfgLoaded = projectileEmitter.loadFromJsonFile("resources/config/spark_projectile_config.json", renderer, CONST_ZIP_FILE); bool explosionCfgLoaded = explosionEmitter.loadFromJsonFile("resources/config/explosion_config.json", renderer, CONST_ZIP_FILE); explosionEmitter.setEmissionPoints(std::vector()); @@ -502,7 +505,19 @@ namespace ZL glBindTexture(GL_TEXTURE_2D, spaceshipTexture->getTexID()); renderer.DrawVertexRenderStruct(spaceship); } + + renderer.PushMatrix(); + renderer.RotateMatrix(Environment::inverseShipMatrix); + renderer.TranslateMatrix(-Environment::shipState.position); + if (Environment::shipState.shipType == 1) { + sparkEmitterCargo.draw(renderer, Environment::zoom, Environment::width, Environment::height); + } + else { + sparkEmitter.draw(renderer, Environment::zoom, Environment::width, Environment::height); + } + renderer.PopMatrix(); } + renderer.PopMatrix(); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); @@ -526,18 +541,20 @@ namespace ZL renderer.shaderManager.PopShader(); + /* if (shipAlive) { renderer.PushMatrix(); - renderer.TranslateMatrix({ 0, 0, 16 }); - renderer.TranslateMatrix({ 0, -6.f, 0 }); + renderer.TranslateMatrix({ 0,0, -1.0f * Environment::zoom }); + renderer.RotateMatrix(Environment::inverseShipMatrix); + renderer.TranslateMatrix(-Environment::shipState.position); if (Environment::shipState.shipType == 1) { - sparkEmitterCargo.draw(renderer, Environment::zoom, Environment::width, Environment::height, false); + sparkEmitterCargo.draw(renderer, Environment::zoom, Environment::width, Environment::height); } else { - sparkEmitter.draw(renderer, Environment::zoom, Environment::width, Environment::height, false); + sparkEmitter.draw(renderer, Environment::zoom, Environment::width, Environment::height); } renderer.PopMatrix(); - } + }*/ if (showExplosion) { explosionEmitter.draw(renderer, Environment::zoom, Environment::width, Environment::height, false); @@ -1424,14 +1441,30 @@ namespace ZL if (Environment::shipState.shipType == 1) { sparkEmitterPtr = &sparkEmitterCargo; + static std::vector emissionPoints = { Vector3f(0, 0, 0), Vector3f(0, 0, 0) }; + emissionPoints[0] = Environment::shipState.position + Environment::shipState.rotation * Vector3f{ 0.0, 2.8, -3.5 + 16.0 }; + emissionPoints[1] = Environment::shipState.position + Environment::shipState.rotation * Vector3f{ 0.0, 1.5, -3.5 + 16.0 }; + sparkEmitterPtr->setEmissionPoints(emissionPoints); } else { sparkEmitterPtr = &sparkEmitter; - + static std::vector emissionPoints = { Vector3f(0, 0, 0), Vector3f(0, 0, 0) }; + emissionPoints[0] = Environment::shipState.position + Environment::shipState.rotation * Vector3f{-1.0, 1.4-1.0, -3.5 + 16.0}; + emissionPoints[1] = Environment::shipState.position + Environment::shipState.rotation * Vector3f{1.0, 1.4 - 1.0, -3.5 + 16.0 }; + sparkEmitterPtr->setEmissionPoints(emissionPoints); } + + if (Environment::shipState.velocity > 0.1f) + { + sparkEmitterPtr->setIsActive(true); + } + else + { + sparkEmitterPtr->setIsActive(false); + } + sparkEmitterPtr->update(static_cast(delta)); - planetObject.update(static_cast(delta)); if (firePressed) { @@ -1574,42 +1607,11 @@ namespace ZL for (const auto& p : projectiles) { if (p && p->isActive()) { Vector3f worldPos = p->getPosition(); - //Vector3f rel = worldPos - Environment::shipState.position; - //Vector3f camPos = Environment::inverseShipMatrix * rel; p->projectileEmitter.setEmissionPoints({ worldPos }); - p->projectileEmitter.emit(); p->projectileEmitter.update(static_cast(delta)); } } - /* - if (!projCameraPoints.empty()) { - projectileEmitter.setEmissionPoints(projCameraPoints); - projectileEmitter.emit(); - } - else { - projectileEmitter.setEmissionPoints(std::vector()); - }*/ - if (Environment::shipState.velocity > 0.1f) { - - sparkEmitterPtr->setIsActive(true); - - std::vector shipCameraPoints; - for (const auto& lp : shipLocalEmissionPoints) { - Vector3f adjusted = lp + Vector3f{ 0.0f, -Environment::zoom * 0.03f, 0.0f }; - shipCameraPoints.push_back(adjusted); - } - if (!shipCameraPoints.empty()) { - sparkEmitterPtr->setEmissionPoints(shipCameraPoints); - } - } - else - { - sparkEmitterPtr->setIsActive(false); - } - - sparkEmitterPtr->update(static_cast(delta)); - //projectileEmitter.update(static_cast(delta)); explosionEmitter.update(static_cast(delta)); if (showExplosion) { @@ -1720,6 +1722,8 @@ namespace ZL } } + planetObject.update(static_cast(delta)); + // update velocity text if (shipAlive && !gameOver) { diff --git a/src/Space.h b/src/Space.h index 759e36f..ee7ae12 100644 --- a/src/Space.h +++ b/src/Space.h @@ -98,7 +98,7 @@ namespace ZL { float projectileCooldownMs = 500.0f; int64_t lastProjectileFireTime = 0; int maxProjectiles = 500; - std::vector shipLocalEmissionPoints; + //std::vector shipLocalEmissionPoints; bool shipAlive = true;