From 7349a1f12627dff5bae9211394b2afd00b1bb86f Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Wed, 25 Sep 2013 15:40:19 +0000 Subject: [PATCH] - attempt to convert use of more floats to double --- source/g3d_viewer/main.cpp | 11 +- source/glest_game/game/game.cpp | 14 +- source/glest_game/graphics/particle_type.cpp | 44 ++--- source/glest_game/graphics/particle_type.h | 34 ++-- source/glest_game/graphics/renderer.cpp | 40 ++--- .../graphics/unit_particle_type.cpp | 16 +- .../glest_game/graphics/unit_particle_type.h | 22 +-- source/glest_game/gui/gui.cpp | 8 +- source/glest_game/gui/selection.cpp | 2 +- source/glest_game/gui/selection.h | 2 +- source/glest_game/menu/menu_background.cpp | 4 +- source/glest_game/type_instances/object.cpp | 22 +-- source/glest_game/type_instances/object.h | 22 +-- source/glest_game/type_instances/unit.cpp | 73 +++------ source/glest_game/type_instances/unit.h | 14 +- source/glest_game/types/skill_type.cpp | 10 +- source/glest_game/types/skill_type.h | 14 +- source/glest_game/world/map.cpp | 8 +- source/glest_game/world/time_flow.cpp | 2 +- source/glest_game/world/unit_updater.cpp | 40 ++--- source/glest_game/world/unit_updater.h | 4 +- source/shared_lib/include/graphics/particle.h | 91 ++++++----- .../graphics/gl/particle_renderer_gl.cpp | 20 +-- .../shared_lib/sources/graphics/particle.cpp | 152 +++++++++--------- 24 files changed, 327 insertions(+), 342 deletions(-) diff --git a/source/g3d_viewer/main.cpp b/source/g3d_viewer/main.cpp index 5d7f0ae1..adfce521 100644 --- a/source/g3d_viewer/main.cpp +++ b/source/g3d_viewer/main.cpp @@ -1340,11 +1340,12 @@ void MainWindow::loadParticle(string path) { (*it)->setValues(ups); if(size > 0) { //getCurrVectorFlat() + Vec3f(0.f, type->getHeight()/2.f, 0.f); - Vec3f vec = Vec3f(0.f, height / 2.f, 0.f); + Vec3d vec = Vec3d(0.f, height / 2.f, 0.f); ups->setPos(vec); } //ups->setFactionColor(getFaction()->getTexture()->getPixmap()->getPixel3f(0,0)); - ups->setFactionColor(renderer->getPlayerColorTexture(playerColor)->getPixmap()->getPixel3f(0,0)); + Vec3d factionColor(renderer->getPlayerColorTexture(playerColor)->getPixmap()->getPixel3f(0,0)); + ups->setFactionColor(factionColor); unitParticleSystems.push_back(ups); renderer->manageParticleSystem(ups); @@ -1457,9 +1458,9 @@ void MainWindow::loadProjectileParticle(string path) { //ps->setPos(vec); Vec3f vec2 = Vec3f(size * 2.f, height * 2.f, height * 2.f); - ps->setPath(vec, vec2); + ps->setPath(Vec3d(vec), Vec3d(vec2)); } - ps->setFactionColor(renderer->getPlayerColorTexture(playerColor)->getPixmap()->getPixel3f(0,0)); + ps->setFactionColor(Vec3d(renderer->getPlayerColorTexture(playerColor)->getPixmap()->getPixel3f(0,0))); projectileParticleSystems.push_back(ps); @@ -1568,7 +1569,7 @@ void MainWindow::loadSplashParticle(string path) { // uses ParticleSystemTypeSp //Vec3f vec2 = Vec3f(size * 2.f, height * 2.f, height * 2.f); // <------- removed relative projectile //ps->setPath(vec, vec2); // <------- removed relative projectile } - ps->setFactionColor(renderer->getPlayerColorTexture(playerColor)->getPixmap()->getPixel3f(0,0)); + ps->setFactionColor(Vec3d(renderer->getPlayerColorTexture(playerColor)->getPixmap()->getPixel3f(0,0))); splashParticleSystems.push_back(ps); diff --git a/source/glest_game/game/game.cpp b/source/glest_game/game/game.cpp index 514c10d0..1ac3405e 100644 --- a/source/glest_game/game/game.cpp +++ b/source/glest_game/game/game.cpp @@ -1416,14 +1416,14 @@ void Game::init(bool initForPreviewOnly) { logger.add(Lang::getInstance().get("LogScreenGameLoadingCreatingRainParticles","",true), true); weatherParticleSystem= new RainParticleSystem(); weatherParticleSystem->setSpeed(12.f / GameConstants::updateFps); - weatherParticleSystem->setPos(gameCamera.getPos()); + weatherParticleSystem->setPos(Vec3d(gameCamera.getPos())); renderer.manageParticleSystem(weatherParticleSystem, rsGame); } else if(world.getTileset()->getWeather() == wSnowy) { logger.add(Lang::getInstance().get("LogScreenGameLoadingCreatingSnowParticles","",true), true); weatherParticleSystem= new SnowParticleSystem(1200); weatherParticleSystem->setSpeed(1.5f / GameConstants::updateFps); - weatherParticleSystem->setPos(gameCamera.getPos()); + weatherParticleSystem->setPos(Vec3d(gameCamera.getPos())); weatherParticleSystem->setTexture(coreData.getSnowTexture()); renderer.manageParticleSystem(weatherParticleSystem, rsGame); } @@ -2141,9 +2141,9 @@ void Game::update() { } if(currentCameraFollowUnit!=NULL){ - Vec3f c=currentCameraFollowUnit->getCurrVector(); + Vec3d c=currentCameraFollowUnit->getCurrVector(); int rotation=currentCameraFollowUnit->getRotation(); - float angle=rotation+180; + double angle=rotation+180; //#ifdef USE_STREFLOP @@ -2158,7 +2158,7 @@ void Game::update() { c.y=c.y+currentCameraFollowUnit->getType()->getHeight()/2.f+2.0f; - getGameCameraPtr()->setPos(c); + getGameCameraPtr()->setPos(Vec3f(c)); rotation=(540-rotation)%360; getGameCameraPtr()->rotateToVH(18.0f,rotation); @@ -2198,7 +2198,7 @@ void Game::update() { //Particle systems if(weatherParticleSystem != NULL) { - weatherParticleSystem->setPos(gameCamera.getPos()); + weatherParticleSystem->setPos(Vec3d(gameCamera.getPos())); } if(SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled && chrono.getMillis() > 0) SystemFlags::OutputDebug(SystemFlags::debugPerformance,"In [%s::%s] Line: %d took msecs: %lld [weather particle updating i = %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,chrono.getMillis(),i); @@ -4448,7 +4448,7 @@ void Game::startCameraFollowUnit() { if(currentUnit != NULL) { currentCameraFollowUnit = currentUnit; getGameCameraPtr()->setState(GameCamera::sUnit); - getGameCameraPtr()->setPos(currentCameraFollowUnit->getCurrVector()); + getGameCameraPtr()->setPos(Vec3f(currentCameraFollowUnit->getCurrVector())); int rotation=currentCameraFollowUnit->getRotation(); getGameCameraPtr()->stop(); diff --git a/source/glest_game/graphics/particle_type.cpp b/source/glest_game/graphics/particle_type.cpp index dba7fd1a..18c6162f 100644 --- a/source/glest_game/graphics/particle_type.cpp +++ b/source/glest_game/graphics/particle_type.cpp @@ -327,7 +327,7 @@ void ParticleSystemType::saveGame(XmlNode *rootNode) { // Texture2D *texture; // Model *model; // float modelCycle; - particleSystemTypeNode->addAttribute("modelCycle",floatToStr(modelCycle,16), mapTagReplacements); + particleSystemTypeNode->addAttribute("modelCycle",doubleToStr(modelCycle,16), mapTagReplacements); // string primitive; particleSystemTypeNode->addAttribute("primitive",primitive, mapTagReplacements); // Vec3f offset; @@ -337,15 +337,15 @@ void ParticleSystemType::saveGame(XmlNode *rootNode) { // Vec4f colorNoEnergy; particleSystemTypeNode->addAttribute("colorNoEnergy",colorNoEnergy.getString(), mapTagReplacements); // float size; - particleSystemTypeNode->addAttribute("size",floatToStr(size,16), mapTagReplacements); + particleSystemTypeNode->addAttribute("size",doubleToStr(size,16), mapTagReplacements); // float sizeNoEnergy; - particleSystemTypeNode->addAttribute("sizeNoEnergy",floatToStr(sizeNoEnergy,16), mapTagReplacements); + particleSystemTypeNode->addAttribute("sizeNoEnergy",doubleToStr(sizeNoEnergy,16), mapTagReplacements); // float speed; - particleSystemTypeNode->addAttribute("speed",floatToStr(speed,16), mapTagReplacements); + particleSystemTypeNode->addAttribute("speed",doubleToStr(speed,16), mapTagReplacements); // float gravity; - particleSystemTypeNode->addAttribute("gravity",floatToStr(gravity,16), mapTagReplacements); + particleSystemTypeNode->addAttribute("gravity",doubleToStr(gravity,16), mapTagReplacements); // float emissionRate; - particleSystemTypeNode->addAttribute("emissionRate",floatToStr(emissionRate,16), mapTagReplacements); + particleSystemTypeNode->addAttribute("emissionRate",doubleToStr(emissionRate,16), mapTagReplacements); // int energyMax; particleSystemTypeNode->addAttribute("energyMax",intToStr(energyMax), mapTagReplacements); // int energyVar; @@ -408,18 +408,18 @@ void ParticleSystemTypeProjectile::load(const XmlNode* particleFileNode, const s ParticleSystemType::load(particleSystemNode, dir, renderer, loadedFileList,parentLoader, techtreePath); //trajectory values - const XmlNode *tajectoryNode= particleSystemNode->getChild("trajectory"); - trajectory= tajectoryNode->getAttribute("type")->getRestrictedValue(); + const XmlNode *trajectoryNode= particleSystemNode->getChild("trajectory"); + trajectory= trajectoryNode->getAttribute("type")->getRestrictedValue(); //trajectory speed - const XmlNode *tajectorySpeedNode= tajectoryNode->getChild("speed"); - trajectorySpeed= tajectorySpeedNode->getAttribute("value")->getFloatValue() / (float)GameConstants::updateFps; + const XmlNode *trajectorySpeedNode= trajectoryNode->getChild("speed"); + trajectorySpeed= trajectorySpeedNode->getAttribute("value")->getFloatValue() / (double)GameConstants::updateFps; //printf("[%s] trajectorySpeed = %f\n",path.c_str(),trajectorySpeed); if(trajectory=="parabolic" || trajectory=="spiral"){ //trajectory scale - const XmlNode *tajectoryScaleNode= tajectoryNode->getChild("scale"); - trajectoryScale= tajectoryScaleNode->getAttribute("value")->getFloatValue(); + const XmlNode *trajectoryScaleNode= trajectoryNode->getChild("scale"); + trajectoryScale= trajectoryScaleNode->getAttribute("value")->getFloatValue(); } else{ trajectoryScale= 1.0f; @@ -427,8 +427,8 @@ void ParticleSystemTypeProjectile::load(const XmlNode* particleFileNode, const s if(trajectory=="spiral"){ //trajectory frequency - const XmlNode *tajectoryFrequencyNode= tajectoryNode->getChild("frequency"); - trajectoryFrequency= tajectoryFrequencyNode->getAttribute("value")->getFloatValue(); + const XmlNode *trajectoryFrequencyNode= trajectoryNode->getChild("frequency"); + trajectoryFrequency= trajectoryFrequencyNode->getAttribute("value")->getFloatValue(); } else{ trajectoryFrequency= 1.0f; @@ -466,11 +466,11 @@ void ParticleSystemTypeProjectile::saveGame(XmlNode *rootNode) { // string trajectory; particleSystemTypeProjectileNode->addAttribute("trajectory",trajectory, mapTagReplacements); // float trajectorySpeed; - particleSystemTypeProjectileNode->addAttribute("trajectorySpeed",floatToStr(trajectorySpeed,16), mapTagReplacements); + particleSystemTypeProjectileNode->addAttribute("trajectorySpeed",doubleToStr(trajectorySpeed,16), mapTagReplacements); // float trajectoryScale; - particleSystemTypeProjectileNode->addAttribute("trajectoryScale",floatToStr(trajectoryScale,16), mapTagReplacements); + particleSystemTypeProjectileNode->addAttribute("trajectoryScale",doubleToStr(trajectoryScale,16), mapTagReplacements); // float trajectoryFrequency; - particleSystemTypeProjectileNode->addAttribute("trajectoryFrequency",floatToStr(trajectoryFrequency,16), mapTagReplacements); + particleSystemTypeProjectileNode->addAttribute("trajectoryFrequency",doubleToStr(trajectoryFrequency,16), mapTagReplacements); } // =========================================================== @@ -549,15 +549,15 @@ void ParticleSystemTypeSplash::saveGame(XmlNode *rootNode) { XmlNode *particleSystemTypeSplashNode = rootNode->addChild("ParticleSystemTypeSplash"); // float emissionRateFade; - particleSystemTypeSplashNode->addAttribute("emissionRateFade",floatToStr(emissionRateFade,16), mapTagReplacements); + particleSystemTypeSplashNode->addAttribute("emissionRateFade",doubleToStr(emissionRateFade,16), mapTagReplacements); // float verticalSpreadA; - particleSystemTypeSplashNode->addAttribute("verticalSpreadA",floatToStr(verticalSpreadA,16), mapTagReplacements); + particleSystemTypeSplashNode->addAttribute("verticalSpreadA",doubleToStr(verticalSpreadA,16), mapTagReplacements); // float verticalSpreadB; - particleSystemTypeSplashNode->addAttribute("verticalSpreadB",floatToStr(verticalSpreadB,16), mapTagReplacements); + particleSystemTypeSplashNode->addAttribute("verticalSpreadB",doubleToStr(verticalSpreadB,16), mapTagReplacements); // float horizontalSpreadA; - particleSystemTypeSplashNode->addAttribute("horizontalSpreadA",floatToStr(horizontalSpreadA,16), mapTagReplacements); + particleSystemTypeSplashNode->addAttribute("horizontalSpreadA",doubleToStr(horizontalSpreadA,16), mapTagReplacements); // float horizontalSpreadB; - particleSystemTypeSplashNode->addAttribute("horizontalSpreadB",floatToStr(horizontalSpreadB,16), mapTagReplacements); + particleSystemTypeSplashNode->addAttribute("horizontalSpreadB",doubleToStr(horizontalSpreadB,16), mapTagReplacements); } }}//end mamespace diff --git a/source/glest_game/graphics/particle_type.h b/source/glest_game/graphics/particle_type.h index dea1436d..33a3b045 100644 --- a/source/glest_game/graphics/particle_type.h +++ b/source/glest_game/graphics/particle_type.h @@ -57,16 +57,16 @@ protected: string type; Texture2D *texture; Model *model; - float modelCycle; + double modelCycle; string primitive; - Vec3f offset; - Vec4f color; - Vec4f colorNoEnergy; - float size; - float sizeNoEnergy; - float speed; - float gravity; - float emissionRate; + Vec3d offset; + Vec4d color; + Vec4d colorNoEnergy; + double size; + double sizeNoEnergy; + double speed; + double gravity; + double emissionRate; int energyMax; int energyVar; string mode; @@ -123,9 +123,9 @@ protected: class ParticleSystemTypeProjectile: public ParticleSystemType{ private: string trajectory; - float trajectorySpeed; - float trajectoryScale; - float trajectoryFrequency; + double trajectorySpeed; + double trajectoryScale; + double trajectoryFrequency; public: ParticleSystemTypeProjectile(); @@ -153,11 +153,11 @@ public: virtual void saveGame(XmlNode *rootNode); private: - float emissionRateFade; - float verticalSpreadA; - float verticalSpreadB; - float horizontalSpreadA; - float horizontalSpreadB; + double emissionRateFade; + double verticalSpreadA; + double verticalSpreadB; + double horizontalSpreadA; + double horizontalSpreadB; }; }}//end namespace diff --git a/source/glest_game/graphics/renderer.cpp b/source/glest_game/graphics/renderer.cpp index 85c553f9..5d1dd92f 100644 --- a/source/glest_game/graphics/renderer.cpp +++ b/source/glest_game/graphics/renderer.cpp @@ -1054,11 +1054,11 @@ void Renderer::setupLighting() { Unit *unit = qCache.visibleQuadUnitList[visibleUnitIndex]; if(world->toRenderUnit(unit) && - unit->getCurrVector().dist(gameCamera->getPos()) < maxLightDist && + unit->getCurrVector().dist(Vec3d(gameCamera->getPos())) < maxLightDist && unit->getType()->getLight() && unit->isOperative()) { //printf("$$$ Show light for faction: %s # %d / %d for Unit [%d - %s]\n",world->getFaction(i)->getType()->getName().c_str(),lightCount,maxLights,unit->getId(),unit->getFullName().c_str()); - Vec4f pos= Vec4f(unit->getCurrVector()); + Vec4f pos= Vec4f(unit->getCurrVector().x,unit->getCurrVector().y,unit->getCurrVector().z,0); pos.y+=4.f; GLenum lightEnum= GL_LIGHT0 + lightCount; @@ -4636,7 +4636,7 @@ void Renderer::renderObjects(const int renderFps) { Model *objModel= o->getModelPtr(); //objModel->updateInterpolationData(o->getAnimProgress(), true); - const Vec3f &v= o->getConstPos(); + const Vec3f &v= Vec3f(o->getConstPos()); if(modelRenderStarted == false) { modelRenderStarted = true; @@ -4878,7 +4878,7 @@ void Renderer::renderTeamColorCircle(){ for(int visibleUnitIndex = 0; visibleUnitIndex < qCache.visibleQuadUnitList.size(); ++visibleUnitIndex) { Unit *unit = qCache.visibleQuadUnitList[visibleUnitIndex]; - Vec3f currVec= unit->getCurrVectorFlat(); + Vec3f currVec= Vec3f(unit->getCurrVectorFlat()); Vec3f color=unit->getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0); glColor4f(color.x, color.y, color.z, 0.7f); renderSelectionCircle(currVec, unit->getType()->getSize(), 0.8f, 0.05f); @@ -4933,7 +4933,7 @@ void Renderer::renderSpecialHighlightUnits(std::mapgetCurrVectorFlat(); + Vec3f currVec= Vec3f(unit->getCurrVectorFlat()); renderSelectionCircle(currVec, unit->getType()->getSize(), radius, thickness); } } @@ -4957,7 +4957,7 @@ void Renderer::renderTeamColorPlane(){ for(int visibleUnitIndex = 0; visibleUnitIndex < qCache.visibleQuadUnitList.size(); ++visibleUnitIndex){ Unit *unit = qCache.visibleQuadUnitList[visibleUnitIndex]; - Vec3f currVec= unit->getCurrVectorFlat(); + Vec3f currVec= Vec3f(unit->getCurrVectorFlat()); renderTeamColorEffect(currVec,visibleUnitIndex,unit->getType()->getSize(), unit->getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0),texture); } @@ -5074,7 +5074,7 @@ void Renderer::renderUnits(const int renderFps) { glPushMatrix(); //translate - Vec3f currVec= unit->getCurrVectorFlat(); + Vec3f currVec= Vec3f(unit->getCurrVectorFlat()); glTranslatef(currVec.x, currVec.y, currVec.z); //rotate @@ -5245,7 +5245,7 @@ void Renderer::renderMorphEffects(){ initialized=true; } - Vec3f currVec= unit->getCurrVectorFlat(); + Vec3f currVec= Vec3f(unit->getCurrVectorFlat()); currVec=Vec3f(currVec.x,currVec.y+0.3f,currVec.z); if(mType->getField() == fAir && unit->getType()->getField()== fLand) { currVec=Vec3f(currVec.x,currVec.y+game->getWorld()->getTileset()->getAirHeight(),currVec.z); @@ -5299,7 +5299,7 @@ void Renderer::renderSelectionEffects() { const Unit *unit= selection->getUnit(i); if(unit != NULL) { //translate - Vec3f currVec= unit->getCurrVectorFlat(); + Vec3f currVec= Vec3f(unit->getCurrVectorFlat()); currVec.y+= 0.3f; //selection circle @@ -5335,7 +5335,7 @@ void Renderer::renderSelectionEffects() { if(i == 0) { lastPosValue = curPosValue; } - Vec3f currVec2 = unit->getVectorFlat(lastPosValue,curPosValue); + Vec3f currVec2 = Vec3f(unit->getVectorFlat(lastPosValue,curPosValue)); currVec2.y+= 0.3f; renderSelectionCircle(currVec2, 1, selectionCircleRadius); //renderSelectionCircle(currVec2, unit->getType()->getSize(), selectionCircleRadius); @@ -5367,7 +5367,7 @@ void Renderer::renderSelectionEffects() { int findUnitId = effect.currentAttackBoostUnits[i]; Unit *affectedUnit = game->getWorld()->findUnitById(findUnitId); if(affectedUnit != NULL) { - Vec3f currVecBoost = affectedUnit->getCurrVectorFlat(); + Vec3f currVecBoost = Vec3f(affectedUnit->getCurrVectorFlat()); currVecBoost.y += 0.3f; renderSelectionCircle(currVecBoost, affectedUnit->getType()->getSize(), 1.f); @@ -5383,7 +5383,7 @@ void Renderer::renderSelectionEffects() { int defaultValue= r->getType()->getDefResPerPatch(); float colorValue=static_cast(r->getAmount())/static_cast(defaultValue); glColor4f(0.1f, 0.1f , colorValue, 0.4f); - renderSelectionCircle(selectedResourceObject->getPos(),2, selectionCircleRadius); + renderSelectionCircle(Vec3f(selectedResourceObject->getPos()),2, selectionCircleRadius); } //target arrow if(selection->getCount() == 1) { @@ -5413,7 +5413,7 @@ void Renderer::renderSelectionEffects() { Vec3f arrowTarget; Command *c= unit->getCurrCommand(); if(c->getUnit() != NULL) { - arrowTarget= c->getUnit()->getCurrVectorFlat(); + arrowTarget= Vec3f(c->getUnit()->getCurrVectorFlat()); } else { Vec2i pos= c->getPos(); @@ -5422,7 +5422,7 @@ void Renderer::renderSelectionEffects() { arrowTarget= Vec3f(pos.x, map->getCell(pos)->getHeight(), pos.y); } - renderArrow(unit->getCurrVectorFlat(), arrowTarget, arrowColor, 0.3f); + renderArrow(Vec3f(unit->getCurrVectorFlat()), arrowTarget, arrowColor, 0.3f); } } @@ -5432,7 +5432,7 @@ void Renderer::renderSelectionEffects() { map->clampPos(pos); Vec3f arrowTarget= Vec3f(pos.x, map->getCell(pos)->getHeight(), pos.y); - renderArrow(unit->getCurrVectorFlat(), arrowTarget, Vec3f(0.f, 0.f, 1.f), 0.3f); + renderArrow(Vec3f(unit->getCurrVectorFlat()), arrowTarget, Vec3f(0.f, 0.f, 1.f), 0.3f); } } } @@ -5450,7 +5450,7 @@ void Renderer::renderSelectionEffects() { glColor4f(1.f, 0.f, 0.f, highlight); } - Vec3f v= unit->getCurrVectorFlat(); + Vec3f v= Vec3f(unit->getCurrVectorFlat()); v.y+= 0.3f; renderSelectionCircle(v, unit->getType()->getSize(), 0.5f+0.4f*highlight ); } @@ -5481,7 +5481,7 @@ void Renderer::renderSelectionEffects() { if(object->isHighlighted()) { float highlight= object->getHightlight(); glColor4f(0.1f, 0.1f , 1.0f, highlight); - Vec3f v= object->getPos(); + Vec3f v= Vec3f(object->getPos()); v.y+= 0.3f; renderSelectionCircle(v, 2, 0.4f+0.4f*highlight ); } @@ -6714,7 +6714,7 @@ void Renderer::selectUsingFrustumSelection(Selection::UnitContainer &units, visibleUnitIndex < qCache.visibleQuadUnitList.size(); ++visibleUnitIndex) { Unit *unit = qCache.visibleQuadUnitList[visibleUnitIndex]; if(unit != NULL && unit->isAlive()) { - Vec3f unitPos = unit->getCurrVector(); + Vec3d unitPos = unit->getCurrVector(); bool insideQuad = CubeInFrustum(quadSelectionCacheItem.frustumData, unitPos.x, unitPos.y, unitPos.z, unit->getType()->getSize()); if(insideQuad == true) { @@ -7486,7 +7486,7 @@ vector Renderer::renderUnitsFast(bool renderingShadows, bool colorPickin glPushMatrix(); //translate - Vec3f currVec= unit->getCurrVectorFlat(); + Vec3f currVec= Vec3f(unit->getCurrVectorFlat()); glTranslatef(currVec.x, currVec.y, currVec.z); //rotate @@ -7589,7 +7589,7 @@ vector Renderer::renderObjectsFast(bool renderingShadows, bool resour //objModel->updateInterpolationData(o->getAnimProgress(), true); //} - const Vec3f &v= o->getConstPos(); + const Vec3f &v= Vec3f(o->getConstPos()); if(colorPickingSelection == false) { glPushName(OBJECT_SELECT_OFFSET+visibleIndex); diff --git a/source/glest_game/graphics/unit_particle_type.cpp b/source/glest_game/graphics/unit_particle_type.cpp index 75f187a3..fb07b29e 100644 --- a/source/glest_game/graphics/unit_particle_type.cpp +++ b/source/glest_game/graphics/unit_particle_type.cpp @@ -172,7 +172,7 @@ void UnitParticleSystemType::load(const XmlNode *particleSystemNode, const strin // delay if(particleSystemNode->hasChild("delay")) { const XmlNode* delayNode = particleSystemNode->getChild("delay"); - const float delay_secs = delayNode->getAttribute("value")->getFloatValue(); + const double delay_secs = delayNode->getAttribute("value")->getFloatValue(); if(delay_secs < 0) throw megaglest_runtime_error("particle effect delay cannot be negative"); delay = (int)delay_secs * GameConstants::updateFps; @@ -183,7 +183,7 @@ void UnitParticleSystemType::load(const XmlNode *particleSystemNode, const strin // lifetime if(particleSystemNode->hasChild("lifetime")) { const XmlNode* lifetimeNode = particleSystemNode->getChild("lifetime"); - const float lifetime_secs = lifetimeNode->getAttribute("value")->getFloatValue(); + const double lifetime_secs = lifetimeNode->getAttribute("value")->getFloatValue(); if(lifetime_secs < 0 && lifetime_secs != -1) throw megaglest_runtime_error("particle effect lifetime cannot be negative (-1 means inherited from parent particle)"); lifetime = (int)lifetime_secs * GameConstants::updateFps; @@ -300,13 +300,13 @@ void UnitParticleSystemType::saveGame(XmlNode *rootNode) { // UnitParticleSystem::Shape shape; unitParticleSystemTypeNode->addAttribute("shape",intToStr(shape), mapTagReplacements); // float angle; - unitParticleSystemTypeNode->addAttribute("angle",floatToStr(angle,16), mapTagReplacements); + unitParticleSystemTypeNode->addAttribute("angle",doubleToStr(angle,16), mapTagReplacements); // float radius; - unitParticleSystemTypeNode->addAttribute("radius",floatToStr(radius,16), mapTagReplacements); + unitParticleSystemTypeNode->addAttribute("radius",doubleToStr(radius,16), mapTagReplacements); // float minRadius; - unitParticleSystemTypeNode->addAttribute("minRadius",floatToStr(minRadius,16), mapTagReplacements); + unitParticleSystemTypeNode->addAttribute("minRadius",doubleToStr(minRadius,16), mapTagReplacements); // float emissionRateFade; - unitParticleSystemTypeNode->addAttribute("emissionRateFade",floatToStr(emissionRateFade,16), mapTagReplacements); + unitParticleSystemTypeNode->addAttribute("emissionRateFade",doubleToStr(emissionRateFade,16), mapTagReplacements); // Vec3f direction; unitParticleSystemTypeNode->addAttribute("direction",direction.getString(), mapTagReplacements); // bool relative; @@ -330,9 +330,9 @@ void UnitParticleSystemType::saveGame(XmlNode *rootNode) { // int lifetime; unitParticleSystemTypeNode->addAttribute("lifetime",intToStr(lifetime), mapTagReplacements); // float startTime; - unitParticleSystemTypeNode->addAttribute("startTime",floatToStr(startTime,16), mapTagReplacements); + unitParticleSystemTypeNode->addAttribute("startTime",doubleToStr(startTime,16), mapTagReplacements); // float endTime; - unitParticleSystemTypeNode->addAttribute("endTime",floatToStr(endTime,16), mapTagReplacements); + unitParticleSystemTypeNode->addAttribute("endTime",doubleToStr(endTime,16), mapTagReplacements); } }}//end mamespace diff --git a/source/glest_game/graphics/unit_particle_type.h b/source/glest_game/graphics/unit_particle_type.h index 17ed5232..b2a9ceac 100644 --- a/source/glest_game/graphics/unit_particle_type.h +++ b/source/glest_game/graphics/unit_particle_type.h @@ -52,11 +52,11 @@ using Shared::Xml::XmlNode; class UnitParticleSystemType: public ParticleSystemType { protected: UnitParticleSystem::Shape shape; - float angle; - float radius; - float minRadius; - float emissionRateFade; - Vec3f direction; + double angle; + double radius; + double minRadius; + double emissionRateFade; + Vec3d direction; bool relative; bool relativeDirection; bool fixed; @@ -67,8 +67,8 @@ protected: bool radiusBasedStartenergy; int delay; int lifetime; - float startTime; - float endTime; + double startTime; + double endTime; public: UnitParticleSystemType(); @@ -81,10 +81,10 @@ public: std::map > > &loadedFileList,string parentLoader, string techtreePath); - void setStartTime(float startTime) { this->startTime = startTime; } - float getStartTime() const { return this->startTime; } - void setEndTime(float endTime) { this->endTime = endTime; } - float getEndTime() const { return this->endTime; } + void setStartTime(double startTime) { this->startTime = startTime; } + double getStartTime() const { return this->startTime; } + void setEndTime(double endTime) { this->endTime = endTime; } + double getEndTime() const { return this->endTime; } const void setValues (UnitParticleSystem *uts); bool hasTexture() const { return(texture != NULL); } diff --git a/source/glest_game/gui/gui.cpp b/source/glest_game/gui/gui.cpp index c124c156..8793061e 100644 --- a/source/glest_game/gui/gui.cpp +++ b/source/glest_game/gui/gui.cpp @@ -305,7 +305,7 @@ void Gui::mouseUpLeftGraphics(int x, int y) { if(selection.isCommandable() && random.randRange(0, 1)==0){ SoundRenderer::getInstance().playFx( selection.getFrontUnit()->getType()->getSelectionSound(), - selection.getFrontUnit()->getCurrVector(), + Vec3f(selection.getFrontUnit()->getCurrVector()), gameCamera->getPos()); } selectionQuad.disable(); @@ -477,7 +477,7 @@ void Gui::giveDefaultOrders(int x, int y,const Unit *targetUnit, bool paintMouse if(random.randRange(0, 1)==0){ SoundRenderer::getInstance().playFx( selection.getFrontUnit()->getType()->getCommandSound(), - selection.getFrontUnit()->getCurrVector(), + Vec3f(selection.getFrontUnit()->getCurrVector()), gameCamera->getPos()); } } @@ -532,7 +532,7 @@ void Gui::giveTwoClickOrders(int x, int y , bool prepared) { if(random.randRange(0, 1) == 0) { SoundRenderer::getInstance().playFx( selection.getFrontUnit()->getType()->getCommandSound(), - selection.getFrontUnit()->getCurrVector(), + Vec3f(selection.getFrontUnit()->getCurrVector()), gameCamera->getPos()); } } @@ -540,7 +540,7 @@ void Gui::giveTwoClickOrders(int x, int y , bool prepared) { void Gui::centerCameraOnSelection() { if(selection.isEmpty() == false) { - Vec3f refPos= selection.getRefPos(); + Vec3f refPos= Vec3f(selection.getRefPos()); gameCamera->centerXZ(refPos.x, refPos.z); } } diff --git a/source/glest_game/gui/selection.cpp b/source/glest_game/gui/selection.cpp index 9286e148..ae8eb9c8 100644 --- a/source/glest_game/gui/selection.cpp +++ b/source/glest_game/gui/selection.cpp @@ -186,7 +186,7 @@ bool Selection::isMeetable() const{ selectedUnits.front()->getType()->getMeetingPoint(); } -Vec3f Selection::getRefPos() const{ +Vec3d Selection::getRefPos() const{ return getFrontUnit()->getCurrVector(); } diff --git a/source/glest_game/gui/selection.h b/source/glest_game/gui/selection.h index 293cbb85..e193595e 100644 --- a/source/glest_game/gui/selection.h +++ b/source/glest_game/gui/selection.h @@ -85,7 +85,7 @@ public: const Unit *getUnit(int i) const {return selectedUnits[i];} Unit *getUnitPtr(int i) {return selectedUnits[i];} const Unit *getFrontUnit() const {return selectedUnits.front();} - Vec3f getRefPos() const; + Vec3d getRefPos() const; bool hasUnit(const Unit* unit) const; void assignGroup(int groupIndex,const UnitContainer *pUnits=NULL); diff --git a/source/glest_game/menu/menu_background.cpp b/source/glest_game/menu/menu_background.cpp index 1d4638a6..309f9638 100644 --- a/source/glest_game/menu/menu_background.cpp +++ b/source/glest_game/menu/menu_background.cpp @@ -160,8 +160,8 @@ void MenuBackground::createRainParticleSystem() { rps->setSpeed(12.f/GameConstants::updateFps); rps->setEmissionRate(25); rps->setWind(-90.f, 4.f/GameConstants::updateFps); - rps->setPos(Vec3f(0.f, 25.f, 0.f)); - rps->setColor(Vec4f(1.f, 1.f, 1.f, 0.2f)); + rps->setPos(Vec3d(0.f, 25.f, 0.f)); + rps->setColor(Vec4d(1.f, 1.f, 1.f, 0.2f)); rps->setRadius(30.f); Renderer &renderer= Renderer::getInstance(); diff --git a/source/glest_game/type_instances/object.cpp b/source/glest_game/type_instances/object.cpp index ca2507b8..5115c37e 100644 --- a/source/glest_game/type_instances/object.cpp +++ b/source/glest_game/type_instances/object.cpp @@ -34,7 +34,7 @@ ObjectStateInterface *Object::stateCallback=NULL; // class Object // ===================================================== -Object::Object(ObjectType *objectType, const Vec3f &pos, const Vec2i &mapPos) : BaseColorPickEntity() { +Object::Object(ObjectType *objectType, const Vec3d &pos, const Vec2i &mapPos) : BaseColorPickEntity() { RandomGen random; random.init(static_cast(pos.x*pos.z)); @@ -44,7 +44,7 @@ Object::Object(ObjectType *objectType, const Vec3f &pos, const Vec2i &mapPos) : highlight= 0.f; animated= false; this->mapPos = mapPos; - this->pos= pos + Vec3f(random.randRange(-0.6f, 0.6f), 0.0f, random.randRange(-0.6f, 0.6f)); + this->pos= pos + Vec3d(random.randRange(-0.6f, 0.6f), 0.0f, random.randRange(-0.6f, 0.6f)); rotation= random.randRange(0.f, 360.f); if(objectType!=NULL){ variation = random.randRange(0, objectType->getModelCount()-1); @@ -111,7 +111,7 @@ void Object::initParticlesFromTypes(const ModelParticleSystemTypes *particleType (*it)->setValues(ups); ups->setPos(this->pos); ups->setRotation(this->rotation); - ups->setFactionColor(Vec3f(0, 0, 0)); + ups->setFactionColor(Vec3d(0, 0, 0)); ups->setVisible(false); this->unitParticleSystems.push_back(ups); Renderer::getInstance().manageParticleSystem(ups, rsGame); @@ -126,7 +126,7 @@ void Object::end(ParticleSystem *particleSystem) { } } -void Object::setHeight(float height) { +void Object::setHeight(double height) { pos.y=height; for(UnitParticleSystems::iterator it= unitParticleSystems.begin(); it != unitParticleSystems.end(); ++it) { @@ -153,17 +153,17 @@ void Object::update() { // printf("#1 Object updating [%s] Speed [%d] animProgress [%f]\n",this->objectType->getTilesetModelType(variation)->getModel()->getFileName().c_str(),objectType->getTilesetModelType(variation)->getAnimSpeed(),animProgress); if(objectType != NULL && objectType->getTilesetModelType(variation) != NULL) { - float heightFactor = 1.f; - const float speedDivider= 100.f; - float speedDenominator = (speedDivider * GameConstants::updateFps); + double heightFactor = 1.f; + const double speedDivider= 100.f; + double speedDenominator = (speedDivider * GameConstants::updateFps); // smooth TwoFrameanimations - float f=1.0f; + double f=1.0f; if(objectType->getTilesetModelType(variation)->getSmoothTwoFrameAnim()==true){ f=abs(std::sin(animProgress*2*3.16))+0.4f; } - float newAnimProgress = animProgress + f*(((float)objectType->getTilesetModelType(variation)->getAnimSpeed() * heightFactor) / speedDenominator); + double newAnimProgress = animProgress + f*(((double)objectType->getTilesetModelType(variation)->getAnimSpeed() * heightFactor) / speedDenominator); // printf("A [%f] B [%f] C [%f] D [%f] E [%f] F [%f]\n", // ((float)objectType->getTilesetModelType(variation)->getAnimSpeed() * heightFactor), @@ -265,7 +265,7 @@ void Object::saveGame(XmlNode *rootNode) { // Vec3f pos; objectNode->addAttribute("pos",pos.getString(), mapTagReplacements); // float rotation; - objectNode->addAttribute("rotation",floatToStr(rotation,16), mapTagReplacements); + objectNode->addAttribute("rotation",doubleToStr(rotation,16), mapTagReplacements); // int variation; objectNode->addAttribute("variation",intToStr(variation), mapTagReplacements); // int lastRenderFrame; @@ -297,7 +297,7 @@ void Object::loadGame(const XmlNode *rootNode,const TechTree *techTree) { resource->loadGame(objectNode,0,techTree); } // Vec3f pos; - pos = Vec3f::strToVec3(objectNode->getAttribute("pos")->getValue()); + pos = Vec3d::strToVec3(objectNode->getAttribute("pos")->getValue()); // float rotation; rotation = objectNode->getAttribute("rotation")->getFloatValue(); // int variation; diff --git a/source/glest_game/type_instances/object.h b/source/glest_game/type_instances/object.h index 352fc16e..58ca6919 100644 --- a/source/glest_game/type_instances/object.h +++ b/source/glest_game/type_instances/object.h @@ -57,20 +57,20 @@ private: ObjectType *objectType; vector unitParticleSystems; Resource *resource; - Vec3f pos; - float rotation; + Vec3d pos; + double rotation; int variation; int lastRenderFrame; Vec2i mapPos; bool visible; bool animated; - float animProgress; - float highlight; + double animProgress; + double highlight; static ObjectStateInterface *stateCallback; public: - Object(ObjectType *objectType, const Vec3f &pos, const Vec2i &mapPos); + Object(ObjectType *objectType, const Vec3d &pos, const Vec2i &mapPos); virtual ~Object(); void end(); //to kill particles @@ -80,21 +80,21 @@ public: const ObjectType *getType() const {return objectType;} Resource *getResource() const {return resource;} - Vec3f getPos() const {return pos;} + Vec3d getPos() const {return pos;} bool isVisible() const {return visible;} - const Vec3f & getConstPos() const {return pos;} - float getRotation() const {return rotation;} + const Vec3d & getConstPos() const {return pos;} + double getRotation() const {return rotation;} const Model *getModel() const; Model *getModelPtr() const; bool getWalkable() const; bool isAnimated() const {return animated;} - float getHightlight() const {return highlight;} + double getHightlight() const {return highlight;} bool isHighlighted() const {return highlight>0.f;} void resetHighlight(); void setResource(const ResourceType *resourceType, const Vec2i &pos); - void setHeight(float height); + void setHeight(double height); void setVisible(bool visible); int getLastRenderFrame() const { return lastRenderFrame; } @@ -104,7 +104,7 @@ public: void updateHighlight(); void update(); - float getAnimProgress() const { return animProgress;} + double getAnimProgress() const { return animProgress;} virtual string getUniquePickName() const; void saveGame(XmlNode *rootNode); diff --git a/source/glest_game/type_instances/unit.cpp b/source/glest_game/type_instances/unit.cpp index 539e33a0..b2cd5b91 100644 --- a/source/glest_game/type_instances/unit.cpp +++ b/source/glest_game/type_instances/unit.cpp @@ -453,7 +453,7 @@ Unit::Unit(int id, UnitPathInterface *unitpath, const Vec2i &pos, this->map= map; this->targetRef = NULL; this->targetField = fLand; - this->targetVec = Vec3f(0.0); + this->targetVec = Vec3d(0.0); this->targetPos = Vec2i(0); this->lastRenderFrame = 0; this->visible = true; @@ -700,7 +700,7 @@ Vec2i Unit::getCenteredPos() const { return pos + Vec2i(type->getSize()/2, type->getSize()/2); } -Vec2f Unit::getFloatCenteredPos() const { +Vec2d Unit::getFloatCenteredPos() const { static string mutexOwnerId = string(__FILE__) + string("_") + intToStr(__LINE__); MutexSafeWrapper safeMutex(mutexCommands,mutexOwnerId); @@ -710,7 +710,7 @@ Vec2f Unit::getFloatCenteredPos() const { throw megaglest_runtime_error(szBuf); } - return Vec2f(pos.x-0.5f+type->getSize()/2.f, pos.y-0.5f+type->getSize()/2.f); + return Vec2d(pos.x-0.5f+type->getSize()/2.f, pos.y-0.5f+type->getSize()/2.f); } Vec2i Unit::getCellPos() const { @@ -754,7 +754,7 @@ void Unit::calculateXZRotation(){ //if(currSkill->getClass()==scMove) if(lastPos != pos){ // targetPosCalc ( maybe also sometimes needed if no move ? terrain flatting... ) SurfaceCell* sc= map->getSurfaceCell(Map::toSurfCoords(pos)); - const Vec3f normal= sc->getNormal(); + const Vec3d normal= Vec3d(sc->getNormal()); #ifdef USE_STREFLOP targetRotationZ= radToDeg(streflop::atan2(static_cast(abs(normal.x)), static_cast(abs(normal.y)))); @@ -1124,7 +1124,7 @@ void Unit::setCurrSkill(const SkillType *currSkill) { (*it)->setValues(ups); ups->setPos(getCurrVector()); if(getFaction()->getTexture()) { - ups->setFactionColor(getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0)); + ups->setFactionColor(Vec3d(getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0))); } unitParticleSystems.push_back(ups); Renderer::getInstance().manageParticleSystem(ups, rsGame); @@ -1267,7 +1267,7 @@ void Unit::setTargetPos(const Vec2i &targetPos) { Vec2i relPos= targetPos - pos; //map->clampPos(relPos); - Vec2f relPosf= Vec2f((float)relPos.x, (float)relPos.y); + Vec2d relPosf= Vec2d((double)relPos.x, (double)relPos.y); #ifdef USE_STREFLOP targetRotation= radToDeg(streflop::atan2(static_cast(relPosf.x), static_cast(relPosf.y))); #else @@ -1411,17 +1411,17 @@ bool Unit::checkModelStateInfoForNewHpValue() { return result; } -Vec3f Unit::getCurrVector() const{ +Vec3d Unit::getCurrVector() const{ if(type == NULL) { char szBuf[8096]=""; snprintf(szBuf,8096,"In [%s::%s Line: %d] ERROR: type == NULL, Unit = [%s]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,this->toString().c_str()); throw megaglest_runtime_error(szBuf); } - return getCurrVectorFlat() + Vec3f(0.f, truncateDecimal(type->getHeight()/2.f), 0.f); + return getCurrVectorFlat() + Vec3d(0.f, truncateDecimal(type->getHeight()/2.f), 0.f); } -Vec3f Unit::getCurrVectorFlat() const{ +Vec3d Unit::getCurrVectorFlat() const{ return getVectorFlat(lastPos, pos); } @@ -1431,8 +1431,8 @@ double Unit::getProgressAsFloat() const { return result; } -Vec3f Unit::getVectorFlat(const Vec2i &lastPosValue, const Vec2i &curPosValue) const { - Vec3f v; +Vec3d Unit::getVectorFlat(const Vec2i &lastPosValue, const Vec2i &curPosValue) const { + Vec3d v; double y1= computeHeight(lastPosValue); double y2= computeHeight(curPosValue); @@ -2145,9 +2145,9 @@ void Unit::updateAttackBoostProgress(const Game* game) { if (getFaction()->getTexture()) { currentAttackBoostOriginatorEffect. currentAppliedEffect->ups->setFactionColor( - getFaction()->getTexture()-> + Vec3d(getFaction()->getTexture()-> getPixmapConst()->getPixel3f( - 0, 0)); + 0, 0))); } Renderer::getInstance().manageParticleSystem( currentAttackBoostOriginatorEffect.currentAppliedEffect->ups, @@ -2252,8 +2252,8 @@ void Unit::updateAttackBoostProgress(const Game* game) { getCurrVector()); if (getFaction()->getTexture()) { currentAttackBoostOriginatorEffect.currentAppliedEffect->ups->setFactionColor( - getFaction()->getTexture()->getPixmapConst()->getPixel3f( - 0, 0)); + Vec3d(getFaction()->getTexture()->getPixmapConst()->getPixel3f( + 0, 0))); } Renderer::getInstance().manageParticleSystem( currentAttackBoostOriginatorEffect.currentAppliedEffect->ups, @@ -2503,7 +2503,7 @@ void Unit::updateTimedParticles() { pst->setValues(ups); ups->setPos(getCurrVector()); if(getFaction()->getTexture()) { - ups->setFactionColor(getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0)); + ups->setFactionColor(Vec3d(getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0))); } unitParticleSystems.push_back(ups); Renderer::getInstance().manageParticleSystem(ups, rsGame); @@ -2640,7 +2640,7 @@ bool Unit::applyAttackBoost(const AttackBoost *boost, const Unit *source) { effect->upst->setValues(effect->ups); effect->ups->setPos(getCurrVector()); if(getFaction()->getTexture()) { - effect->ups->setFactionColor(getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0)); + effect->ups->setFactionColor(Vec3d(getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0))); } Renderer::getInstance().manageParticleSystem(effect->ups, rsGame); } @@ -3376,7 +3376,7 @@ void Unit::updateTarget(){ //update target pos targetPos= target->getCellPos(); Vec2i relPos= targetPos - pos; - Vec2f relPosf= Vec2f((float)relPos.x, (float)relPos.y); + Vec2d relPosf= Vec2d((double)relPos.x, (double)relPos.y); #ifdef USE_STREFLOP targetRotation= radToDeg(streflop::atan2(static_cast(relPosf.x), static_cast(relPosf.y))); #else @@ -3767,7 +3767,7 @@ void Unit::checkCustomizedParticleTriggers(bool force) { pst->setValues(ups); ups->setPos(getCurrVector()); if(getFaction()->getTexture()) { - ups->setFactionColor(getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0)); + ups->setFactionColor(Vec3d(getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0))); } damageParticleSystems.push_back(ups); damageParticleSystemsInUse[i] = ups; @@ -3792,7 +3792,7 @@ void Unit::startDamageParticles() { pst->setValues(ups); ups->setPos(getCurrVector()); if(getFaction()->getTexture()) { - ups->setFactionColor(getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0)); + ups->setFactionColor(Vec3d(getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0))); } damageParticleSystems.push_back(ups); damageParticleSystemsInUse[i] = ups; @@ -3819,12 +3819,12 @@ void Unit::startDamageParticles() { // smoke UnitParticleSystem *ups= new UnitParticleSystem(400); ups->setParticleOwner(this); - ups->setColorNoEnergy(Vec4f(0.0f, 0.0f, 0.0f, 0.13f)); - ups->setColor(Vec4f(0.115f, 0.115f, 0.115f, 0.22f)); + ups->setColorNoEnergy(Vec4d(0.0f, 0.0f, 0.0f, 0.13f)); + ups->setColor(Vec4d(0.115f, 0.115f, 0.115f, 0.22f)); ups->setPos(getCurrVector()); ups->setBlendMode(ups->strToBlendMode("black")); - ups->setOffset(Vec3f(0,2,0)); - ups->setDirection(Vec3f(0,1,-0.2f)); + ups->setOffset(Vec3d(0,2,0)); + ups->setDirection(Vec3d(0,1,-0.2f)); ups->setRadius(type->getSize()/3.f); ups->setShape(Shared::Graphics::UnitParticleSystem::sLinear); ups->setTexture(CoreData::getInstance().getFireTexture()); @@ -3845,7 +3845,7 @@ void Unit::startDamageParticles() { checkCustomizedParticleTriggers(false); } -void Unit::setTargetVec(const Vec3f &targetVec) { +void Unit::setTargetVec(const Vec3d &targetVec) { this->targetVec= targetVec; logSynchData(extractFileFromDirectoryPath(__FILE__).c_str(),__LINE__); } @@ -4687,7 +4687,7 @@ Unit * Unit::loadGame(const XmlNode *rootNode, GameSettings *settings, Faction * // Vec2i targetPos; //absolute target pos result->targetPos = Vec2i::strToVec2(unitNode->getAttribute("targetPos")->getValue()); // Vec3f targetVec; - result->targetVec = Vec3f::strToVec3(unitNode->getAttribute("targetVec")->getValue()); + result->targetVec = Vec3d::strToVec3(unitNode->getAttribute("targetVec")->getValue()); // Vec2i meetingPos; result->meetingPos = Vec2i::strToVec2(unitNode->getAttribute("meetingPos")->getValue()); // @@ -4905,28 +4905,7 @@ Unit * Unit::loadGame(const XmlNode *rootNode, GameSettings *settings, Faction * //ups->setTexture(CoreData::getInstance().getFireTexture()); result->smokeParticleSystems.push_back(ups); -// UnitParticleSystem *ups= new UnitParticleSystem(400); -// ups->setColorNoEnergy(Vec4f(0.0f, 0.0f, 0.0f, 0.13f)); -// ups->setColor(Vec4f(0.115f, 0.115f, 0.115f, 0.22f)); -// ups->setPos(result->getCurrVector()); -// ups->setBlendMode(ups->strToBlendMode("black")); -// ups->setOffset(Vec3f(0,2,0)); -// ups->setDirection(Vec3f(0,1,-0.2f)); -// ups->setRadius(result->type->getSize()/3.f); -// ups->setShape(Shared::Graphics::UnitParticleSystem::sLinear); -// ups->setTexture(CoreData::getInstance().getFireTexture()); -// const Game *game = Renderer::getInstance().getGame(); -// ups->setSpeed(2.0f / game->getWorld()->getUpdateFps(result->getFactionIndex())); -// ups->setGravity(0.0004f); -// ups->setEmissionRate(1); -// ups->setMaxParticleEnergy(150); -// ups->setSizeNoEnergy(result->type->getSize()*0.6f); -// ups->setParticleSize(result->type->getSize()*0.8f); -// result->smokeParticleSystems.push_back(ups); - - //Renderer::getInstance().manageParticleSystem(result->fire, rsGame); Renderer::getInstance().addToDeferredParticleSystemList(make_pair(ups, rsGame)); - //printf("Loading smoke particles:\n[%s]\n",ups->toString().c_str()); } } diff --git a/source/glest_game/type_instances/unit.h b/source/glest_game/type_instances/unit.h index 03883d07..53b59a18 100644 --- a/source/glest_game/type_instances/unit.h +++ b/source/glest_game/type_instances/unit.h @@ -368,7 +368,7 @@ private: Vec2i pos; Vec2i lastPos; Vec2i targetPos; //absolute target pos - Vec3f targetVec; + Vec3d targetVec; Vec2i meetingPos; double lastRotation; //in degrees @@ -536,7 +536,7 @@ public: double getEpRatio() const; inline bool getToBeUndertaken() const {return toBeUndertaken;} inline Vec2i getTargetPos() const {return targetPos;} - inline Vec3f getTargetVec() const {return targetVec;} + inline Vec3d getTargetVec() const {return targetVec;} inline Field getTargetField() const {return targetField;} inline Vec2i getMeetingPos() const {return meetingPos;} inline Faction *getFaction() const {return faction;} @@ -574,7 +574,7 @@ public: Vec2i getPosWithCellMapSet() const; inline Vec2i getLastPos() const {return lastPos;} Vec2i getCenteredPos() const; - Vec2f getFloatCenteredPos() const; + Vec2d getFloatCenteredPos() const; Vec2i getCellPos() const; //is @@ -613,7 +613,7 @@ public: void refreshPos(); void setTargetPos(const Vec2i &targetPos); void setTarget(const Unit *unit); - void setTargetVec(const Vec3f &targetVec); + void setTargetVec(const Vec3d &targetVec); void setMeetingPos(const Vec2i &meetingPos); void setVisible(const bool visible); inline bool getVisible() const { return visible; } @@ -621,9 +621,9 @@ public: //render related const Model *getCurrentModel(); Model *getCurrentModelPtr(); - Vec3f getCurrVector() const; - Vec3f getCurrVectorFlat() const; - Vec3f getVectorFlat(const Vec2i &lastPosValue, const Vec2i &curPosValue) const; + Vec3d getCurrVector() const; + Vec3d getCurrVectorFlat() const; + Vec3d getVectorFlat(const Vec2i &lastPosValue, const Vec2i &curPosValue) const; //command related bool anyCommand(bool validateCommandtype=false) const; diff --git a/source/glest_game/types/skill_type.cpp b/source/glest_game/types/skill_type.cpp index fa86f420..b43bc016 100644 --- a/source/glest_game/types/skill_type.cpp +++ b/source/glest_game/types/skill_type.cpp @@ -140,7 +140,7 @@ bool AttackBoost::isAffected(const Unit *source, const Unit *dest) const { } if(destUnitMightApply == true) { - float distance = source->getCenteredPos().dist(dest->getCenteredPos()); + double distance = source->getCenteredPos().dist(dest->getCenteredPos()); if(distance <= radius) { result = true; } @@ -516,7 +516,7 @@ const AnimationAttributes SkillType::getAnimationAttribute(int index) const { return animationAttributes[index]; } -Model *SkillType::getAnimation(float animProgress, const Unit *unit, +Model *SkillType::getAnimation(double animProgress, const Unit *unit, int *lastAnimationIndex, int *animationRandomCycleCount) const { int modelIndex = 0; //printf("Count [%d] animProgress = [%f] for skill [%s] animationRandomCycleCount = %d\n",animations.size(),animProgress,name.c_str(),*animationRandomCycleCount); @@ -665,7 +665,7 @@ void SkillType::saveGame(XmlNode *rootNode) { // // SoundContainer sounds; // float soundStartTime; - skillTypeNode->addAttribute("soundStartTime",floatToStr(soundStartTime,16), mapTagReplacements); + skillTypeNode->addAttribute("soundStartTime",doubleToStr(soundStartTime,16), mapTagReplacements); // RandomGen random; skillTypeNode->addAttribute("random",intToStr(random.getLastNumber()), mapTagReplacements); // AttackBoost attackBoost; @@ -897,7 +897,7 @@ void AttackSkillType::saveGame(XmlNode *rootNode) { attackFieldsNode->addAttribute("value",intToStr(attackFields[i]), mapTagReplacements); } // float attackStartTime; - attackSkillTypeNode->addAttribute("attackStartTime",floatToStr(attackStartTime,16), mapTagReplacements); + attackSkillTypeNode->addAttribute("attackStartTime",doubleToStr(attackStartTime,16), mapTagReplacements); // string spawnUnit; attackSkillTypeNode->addAttribute("spawnUnit",spawnUnit, mapTagReplacements); // int spawnUnitcount; @@ -1220,7 +1220,7 @@ void FogOfWarSkillType::saveGame(XmlNode *rootNode) { fogSkillTypeNode->addAttribute("enable-fog",intToStr(fowEnable), mapTagReplacements); fogSkillTypeNode->addAttribute("apply-team",intToStr(applyToTeam), mapTagReplacements); - fogSkillTypeNode->addAttribute("duration",floatToStr(durationTime,16), mapTagReplacements); + fogSkillTypeNode->addAttribute("duration",doubleToStr(durationTime,16), mapTagReplacements); } // ===================================================== diff --git a/source/glest_game/types/skill_type.h b/source/glest_game/types/skill_type.h index e9e71ea5..bdfe4d64 100644 --- a/source/glest_game/types/skill_type.h +++ b/source/glest_game/types/skill_type.h @@ -137,7 +137,7 @@ protected: vector animationAttributes; SoundContainer sounds; - float soundStartTime; + double soundStartTime; RandomGen random; AttackBoost attackBoost; @@ -175,9 +175,9 @@ public: int getHpCost() const {return hpCost;} int getSpeed() const {return speed;} int getAnimSpeed() const {return animSpeed;} - Model *getAnimation(float animProgress=0, const Unit *unit=NULL, int *lastAnimationIndex=NULL, int *animationRandomCycleCount=NULL) const; + Model *getAnimation(double animProgress=0, const Unit *unit=NULL, int *lastAnimationIndex=NULL, int *animationRandomCycleCount=NULL) const; StaticSound *getSound() const {return sounds.getRandSound();} - float getSoundStartTime() const {return soundStartTime;} + double getSoundStartTime() const {return soundStartTime;} bool isAttackBoostEnabled() const { return attackBoost.enabled; } const AttackBoost * getAttackBoost() const { return &attackBoost; } @@ -226,7 +226,7 @@ private: int attackRange; const AttackType *attackType; bool attackFields[fieldCount]; - float attackStartTime; + double attackStartTime; string spawnUnit; int spawnUnitcount; @@ -253,7 +253,7 @@ public: inline int getAttackRange() const {return attackRange;} inline const AttackType *getAttackType() const {return attackType;} inline bool getAttackField(Field field) const {return attackFields[field];} - inline float getAttackStartTime() const {return attackStartTime;} + inline double getAttackStartTime() const {return attackStartTime;} inline string getSpawnUnit() const {return spawnUnit;} inline int getSpawnUnitCount() const {return spawnUnitcount;} @@ -419,13 +419,13 @@ class FogOfWarSkillType: public SkillType { private: bool fowEnable; bool applyToTeam; - float durationTime; + double durationTime; public: FogOfWarSkillType(); bool getFowEnable() const {return fowEnable;} bool getApplyToTeam() const {return applyToTeam;} - float getDurationTime() const {return durationTime;} + double getDurationTime() const {return durationTime;} virtual void load(const XmlNode *sn, const XmlNode *attackBoostsNode, const string &dir, const TechTree *tt, const FactionType *ft, std::map > > &loadedFileList, diff --git a/source/glest_game/world/map.cpp b/source/glest_game/world/map.cpp index 2b2bb865..43b8511d 100644 --- a/source/glest_game/world/map.cpp +++ b/source/glest_game/world/map.cpp @@ -481,7 +481,7 @@ Checksum Map::load(const string &path, TechTree *techTree, Tileset *tileset) { sc->setObject(NULL); } else if(objNumber <= Tileset::objCount) { - Object *o= new Object(tileset->getObjectType(objNumber-1), sc->getVertex(),Vec2i(i, j)); + Object *o= new Object(tileset->getObjectType(objNumber-1), Vec3d(sc->getVertex()),Vec2i(i, j)); sc->setObject(o); for(int k = 0; k < techTree->getResourceTypeCount(); ++k) { const ResourceType *rt= techTree->getResourceType(k); @@ -492,7 +492,7 @@ Checksum Map::load(const string &path, TechTree *techTree, Tileset *tileset) { } else{ const ResourceType *rt= techTree->getTechResourceType(objNumber - Tileset::objCount) ; - Object *o= new Object(NULL, sc->getVertex(),Vec2i(i, j)); + Object *o= new Object(NULL, Vec3d(sc->getVertex()),Vec2i(i, j)); o->setResource(rt, Vec2i(i, j)); sc->setObject(o); } @@ -1641,8 +1641,8 @@ void Map::smoothSurface(Tileset *tileset) { } if (formerObject == NULL) { Object *o = new Object(tileset->getObjectType(9), - getSurfaceCell(i, j)->getVertex(), Vec2i(i, - j)); + Vec3d(getSurfaceCell(i, j)->getVertex()), + Vec2i(i,j)); getSurfaceCell(i, j)->setObject(o); } } diff --git a/source/glest_game/world/time_flow.cpp b/source/glest_game/world/time_flow.cpp index d5faedd3..7836b219 100644 --- a/source/glest_game/world/time_flow.cpp +++ b/source/glest_game/world/time_flow.cpp @@ -74,7 +74,7 @@ void TimeFlow::update() { } UnitParticleSystem::isNight=false; } - UnitParticleSystem::lightColor=computeLightColor(); + UnitParticleSystem::lightColor = Vec3d(computeLightColor()); if((lastTime=dawn) || firstTime){ diff --git a/source/glest_game/world/unit_updater.cpp b/source/glest_game/world/unit_updater.cpp index 251279e6..d3c92422 100644 --- a/source/glest_game/world/unit_updater.cpp +++ b/source/glest_game/world/unit_updater.cpp @@ -119,11 +119,11 @@ bool UnitUpdater::updateUnit(Unit *unit) { //play skill sound const SkillType *currSkill= unit->getCurrSkill(); if(currSkill->getSound() != NULL) { - float soundStartTime= currSkill->getSoundStartTime(); + double soundStartTime= currSkill->getSoundStartTime(); if(soundStartTime >= unit->getLastAnimProgressAsFloat() && soundStartTime < unit->getAnimProgressAsFloat()) { if(map->getSurfaceCell(Map::toSurfCoords(unit->getPos()))->isVisible(world->getThisTeamIndex()) || (game->getWorld()->showWorldForPlayer(game->getWorld()->getThisTeamIndex()) == true)) { - soundRenderer.playFx(currSkill->getSound(), unit->getCurrVector(), gameCamera->getPos()); + soundRenderer.playFx(currSkill->getSound(), Vec3f(unit->getCurrVector()), gameCamera->getPos()); } } } @@ -275,7 +275,7 @@ bool UnitUpdater::updateUnit(Unit *unit) { if(Config::getInstance().getBool("DisableWaterSounds","false") == false) { soundRenderer.playFx( CoreData::getInstance().getWaterSound(), - unit->getCurrVector(), + Vec3f(unit->getCurrVector()), gameCamera->getPos() ); @@ -930,7 +930,7 @@ void UnitUpdater::updateBuild(Unit *unit, int frameIndex) { (game->getWorld()->showWorldForPlayer(game->getWorld()->getThisTeamIndex()) == true)) { SoundRenderer::getInstance().playFx( bct->getStartSound(), - unit->getCurrVector(), + Vec3f(unit->getCurrVector()), gameCamera->getPos()); } @@ -1022,7 +1022,7 @@ void UnitUpdater::updateBuild(Unit *unit, int frameIndex) { (game->getWorld()->showWorldForPlayer(game->getWorld()->getThisTeamIndex()) == true)) { SoundRenderer::getInstance().playFx( bct->getBuiltSound(), - unit->getCurrVector(), + Vec3f(unit->getCurrVector()), gameCamera->getPos()); } } @@ -2295,8 +2295,8 @@ void UnitUpdater::startAttackParticleSystem(Unit *unit){ ParticleSystemTypeProjectile *pstProj= ast->getProjParticleType(); ParticleSystemTypeSplash *pstSplash= ast->getSplashParticleType(); - Vec3f startPos= unit->getCurrVector(); - Vec3f endPos= unit->getTargetVec(); + Vec3d startPos= unit->getCurrVector(); + Vec3d endPos= unit->getTargetVec(); //make particle system const SurfaceCell *sc= map->getSurfaceCell(Map::toSurfCoords(unit->getPos())); @@ -2313,7 +2313,7 @@ void UnitUpdater::startAttackParticleSystem(Unit *unit){ psProj->setObserver(new ParticleDamager(unit, this, gameCamera)); psProj->setVisible(visible); if(unit->getFaction()->getTexture()) { - psProj->setFactionColor(unit->getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0)); + psProj->setFactionColor(Vec3d(unit->getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0))); } renderer.manageParticleSystem(psProj, rsGame); unit->addAttackParticleSystem(psProj); @@ -2328,7 +2328,7 @@ void UnitUpdater::startAttackParticleSystem(Unit *unit){ psSplash->setPos(endPos); psSplash->setVisible(visible); if(unit->getFaction()->getTexture()) { - psSplash->setFactionColor(unit->getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0)); + psSplash->setFactionColor(Vec3d(unit->getFaction()->getTexture()->getPixmapConst()->getPixel3f(0,0))); } renderer.manageParticleSystem(psSplash, rsGame); if(pstProj!=NULL){ @@ -2489,7 +2489,7 @@ bool UnitUpdater::unitOnRange(Unit *unit, int range, Unit **rangedPtr, //aux vars int size = unit->getType()->getSize(); Vec2i center = unit->getPos(); - Vec2f floatCenter = unit->getFloatCenteredPos(); + Vec2d floatCenter = unit->getFloatCenteredPos(); //bool foundInCache = true; if(findCachedCellsEnemies(center,range,size,enemies,ast, @@ -2501,9 +2501,9 @@ bool UnitUpdater::unitOnRange(Unit *unit, int range, Unit **rangedPtr, for(int j = center.y - range; j < center.y + range + size; ++j) { //cells inside map and in range #ifdef USE_STREFLOP - if(map->isInside(i, j) && streflop::floor(static_cast(floatCenter.dist(Vec2f((float)i, (float)j)))) <= (range+1)){ + if(map->isInside(i, j) && streflop::floor(static_cast(floatCenter.dist(Vec2d((double)i, (double)j)))) <= (range+1)){ #else - if(map->isInside(i, j) && floor(floatCenter.dist(Vec2f((float)i, (float)j))) <= (range+1)){ + if(map->isInside(i, j) && floor(floatCenter.dist(Vec2d((double)i, (double)j))) <= (range+1)){ #endif Cell *cell = map->getCell(i,j); findEnemiesForCell(ast,cell,unit,commandTarget,enemies); @@ -2594,7 +2594,7 @@ bool UnitUpdater::unitOnRange(Unit *unit, int range, Unit **rangedPtr, if(evalMode == false && onlyEnemyUnits == false && enemyUnit->getTeam() != world->getThisTeamIndex()) { - Vec2f enemyFloatCenter = enemyUnit->getFloatCenteredPos(); + Vec2d enemyFloatCenter = enemyUnit->getFloatCenteredPos(); // find nearest Attack and cleanup old dates AttackWarningData *nearest = NULL; double currentDistance = 0.f; @@ -2683,7 +2683,7 @@ vector UnitUpdater::enemyUnitsOnRange(const Unit *unit,const AttackSkillT //aux vars int size = unit->getType()->getSize(); Vec2i center = unit->getPosNotThreadSafe(); - Vec2f floatCenter = unit->getFloatCenteredPos(); + Vec2d floatCenter = unit->getFloatCenteredPos(); //bool foundInCache = true; if(findCachedCellsEnemies(center,range,size,enemies,ast, @@ -2695,9 +2695,9 @@ vector UnitUpdater::enemyUnitsOnRange(const Unit *unit,const AttackSkillT for(int j = center.y - range; j < center.y + range + size; ++j) { //cells inside map and in range #ifdef USE_STREFLOP - if(map->isInside(i, j) && streflop::floor(static_cast(floatCenter.dist(Vec2f((float)i, (float)j)))) <= (range+1)){ + if(map->isInside(i, j) && streflop::floor(static_cast(floatCenter.dist(Vec2d((double)i, (double)j)))) <= (range+1)){ #else - if(map->isInside(i, j) && floor(floatCenter.dist(Vec2f((float)i, (float)j))) <= (range+1)){ + if(map->isInside(i, j) && floor(floatCenter.dist(Vec2d((double)i, (double)j))) <= (range+1)){ #endif Cell *cell = map->getCell(i,j); findEnemiesForCell(ast,cell,unit,commandTarget,enemies); @@ -2743,7 +2743,7 @@ vector UnitUpdater::findUnitsInRange(const Unit *unit, int radius) { //aux vars int size = unit->getType()->getSize(); Vec2i center = unit->getPosNotThreadSafe(); - Vec2f floatCenter = unit->getFloatCenteredPos(); + Vec2d floatCenter = unit->getFloatCenteredPos(); //nearby cells //UnitRangeCellsLookupItem cacheItem; @@ -2751,9 +2751,9 @@ vector UnitUpdater::findUnitsInRange(const Unit *unit, int radius) { for(int j = center.y - range; j < center.y + range + size; ++j) { //cells inside map and in range #ifdef USE_STREFLOP - if(map->isInside(i, j) && streflop::floor(static_cast(floatCenter.dist(Vec2f((float)i, (float)j)))) <= (range+1)){ + if(map->isInside(i, j) && streflop::floor(static_cast(floatCenter.dist(Vec2d((double)i, (double)j)))) <= (range+1)){ #else - if(map->isInside(i, j) && floor(floatCenter.dist(Vec2f((float)i, (float)j))) <= (range+1)){ + if(map->isInside(i, j) && floor(floatCenter.dist(Vec2d((double)i, (double)j))) <= (range+1)){ #endif Cell *cell = map->getCell(i,j); findUnitsForCell(cell,unit,units); @@ -2865,7 +2865,7 @@ void ParticleDamager::update(ParticleSystem *particleSystem) { //play sound StaticSound *projSound= ast->getProjSound(); if(particleSystem->getVisible() && projSound != NULL) { - SoundRenderer::getInstance().playFx(projSound, attacker->getCurrVector(), gameCamera->getPos()); + SoundRenderer::getInstance().playFx(projSound, Vec3f(attacker->getCurrVector()), gameCamera->getPos()); } } particleSystem->setObserver(NULL); diff --git a/source/glest_game/world/unit_updater.h b/source/glest_game/world/unit_updater.h index 02a15004..ea49f164 100644 --- a/source/glest_game/world/unit_updater.h +++ b/source/glest_game/world/unit_updater.h @@ -55,7 +55,7 @@ public: class AttackWarningData { public: - Vec2f attackPosition; + Vec2d attackPosition; int lastFrameCount; }; @@ -81,7 +81,7 @@ private: Game *game; //RandomGen random; Mutex mutexAttackWarnings; - float attackWarnRange; + double attackWarnRange; AttackWarnings attackWarnings; Mutex mutexUnitRangeCellsLookupItemCache; diff --git a/source/shared_lib/include/graphics/particle.h b/source/shared_lib/include/graphics/particle.h index 0b906c67..8dea8f66 100644 --- a/source/shared_lib/include/graphics/particle.h +++ b/source/shared_lib/include/graphics/particle.h @@ -45,11 +45,11 @@ class Model; class Particle { public: //attributes - Vec3f pos; - Vec3f lastPos; - Vec3f speed; - Vec3f accel; - Vec4f color; + Vec3d pos; + Vec3d lastPos; + Vec3d speed; + Vec3d accel; + Vec4d color; double size; int energy; @@ -59,11 +59,14 @@ public: energy = 0; } //get - Vec3f getPos() const {return pos;} - Vec3f getLastPos() const {return lastPos;} - Vec3f getSpeed() const {return speed;} - Vec3f getAccel() const {return accel;} - Vec4f getColor() const {return color;} + Vec3d getPos() const {return pos;} + Vec3f getPosAsFloat() const {return Vec3f(pos.x,pos.y,pos.z);} + Vec3d getLastPos() const {return lastPos;} + Vec3f getLastPosAsFloat() const {return Vec3f(lastPos.x,lastPos.y,lastPos.z);} + Vec3d getSpeed() const {return speed;} + Vec3d getAccel() const {return accel;} + Vec4d getColor() const {return color;} + Vec4f getColorAsFloat() const {return Vec4f(color.x,color.y,color.z,color.w);} double getSize() const {return size;} int getEnergy() const {return energy;} @@ -85,6 +88,7 @@ public: class ParticleOwner { public: + virtual ~ParticleOwner() {}; virtual void end(ParticleSystem *particleSystem)= 0; }; @@ -93,7 +97,6 @@ public: // ===================================================== class ParticleSystem { - public: enum State { @@ -135,16 +138,16 @@ protected: int textureFileLoadDeferredComponents; Texture *texture; - Vec3f pos; - Vec4f color; - Vec4f colorNoEnergy; + Vec3d pos; + Vec4d color; + Vec4d colorNoEnergy; double emissionRate; double emissionState; int maxParticleEnergy; int varParticleEnergy; double particleSize; double speed; - Vec3f factionColor; + Vec3d factionColor; bool teamcolorNoEnergy; bool teamcolorEnergy; int alternations; @@ -166,7 +169,8 @@ public: State getState() const {return state;} BlendMode getBlendMode() const {return blendMode;} Texture *getTexture() const {return texture;} - Vec3f getPos() const {return pos;} + Vec3d getPos() const {return pos;} + Vec3f getPosAsFloat() const {return Vec3f(pos.x,pos.y,pos.z);} Particle *getParticle(int i) {return &particles[i];} const Particle *getParticle(int i) const {return &particles[i];} int getAliveParticleCount() const {return aliveParticleCount;} @@ -181,9 +185,9 @@ public: //set virtual void setState(State state); void setTexture(Texture *texture); - virtual void setPos(Vec3f pos); - void setColor(Vec4f color); - void setColorNoEnergy(Vec4f color); + virtual void setPos(Vec3d pos); + void setColor(Vec4d color); + void setColorNoEnergy(Vec4d color); void setEmissionRate(double emissionRate); void setMaxParticleEnergy(int maxParticleEnergy); void setVarParticleEnergy(int varParticleEnergy); @@ -197,7 +201,7 @@ public: void setTeamcolorEnergy(bool teamcolorEnergy) {this->teamcolorEnergy= teamcolorEnergy;} void setAlternations(int alternations) {this->alternations= alternations;} void setParticleSystemStartDelay(int delay) {this->particleSystemStartDelay= delay;} - virtual void setFactionColor(Vec3f factionColor); + virtual void setFactionColor(Vec3d factionColor); static BlendMode strToBlendMode(const string &str); //misc @@ -237,7 +241,7 @@ protected: class FireParticleSystem: public ParticleSystem{ private: double radius; - Vec3f windSpeed; + Vec3d windSpeed; public: FireParticleSystem(int particleCount= 2000); @@ -280,8 +284,8 @@ public: ParticleSystem* getChild(int i); void addChild(UnitParticleSystem* child); void removeChild(UnitParticleSystem* child); - void setPos(Vec3f pos); - void setOffset(Vec3f offset); + void setPos(Vec3d pos); + void setOffset(Vec3d offset); void setModel(Model *model) {this->model= model;} virtual void render(ParticleRenderer *pr, ModelRenderer *mr); double getTween() { return tween; } // 0.0 -> 1.0 for animation of model @@ -289,7 +293,8 @@ public: virtual string getModelFileLoadDeferred(); void setPrimitive(Primitive primitive) {this->primitive= primitive;} - Vec3f getDirection() const {return direction;} + Vec3d getDirection() const {return direction;} + Vec3f getDirectionAsFloat() const {return Vec3f(direction.x, direction.y, direction.z);} void setModelCycle(double modelCycle) {this->modelCycle= modelCycle;} virtual void saveGame(XmlNode *rootNode); @@ -307,8 +312,8 @@ protected: string modelFileLoadDeferred; Model *model; double modelCycle; - Vec3f offset; - Vec3f direction; + Vec3d offset; + Vec3d direction; double tween; GameParticleSystem(int particleCount); @@ -323,14 +328,14 @@ protected: class UnitParticleSystem: public GameParticleSystem{ public: static bool isNight; - static Vec3f lightColor; + static Vec3d lightColor; private: double radius; double minRadius; - Vec3f windSpeed; - Vec3f cRotation; - Vec3f fixedAddition; - Vec3f oldPosition; + Vec3d windSpeed; + Vec3d cRotation; + Vec3d fixedAddition; + Vec3d oldPosition; bool energyUp; double startTime; double endTime; @@ -385,7 +390,7 @@ public: void setWind(double windAngle, double windSpeed); - void setDirection(Vec3f direction) {this->direction= direction;} + void setDirection(Vec3d direction) {this->direction= direction;} void setSizeNoEnergy(double sizeNoEnergy) {this->sizeNoEnergy= sizeNoEnergy;} void setGravity(double gravity) {this->gravity= gravity;} void setRotation(double rotation); @@ -404,7 +409,7 @@ public: void setLifetime(int lifetime) {this->lifetime= lifetime;} void setParent(GameParticleSystem* parent) {this->parent= parent;} GameParticleSystem* getParent() const {return parent;} - void setParentDirection(Vec3f parentDirection); + void setParentDirection(Vec3d parentDirection); static Shape strToShape(const string& str); @@ -422,7 +427,7 @@ public: class RainParticleSystem: public ParticleSystem{ private: - Vec3f windSpeed; + Vec3d windSpeed; double radius; public: @@ -449,7 +454,7 @@ public: class SnowParticleSystem: public ParticleSystem{ private: - Vec3f windSpeed; + Vec3d windSpeed; double radius; public: @@ -514,14 +519,14 @@ public: private: SplashParticleSystem *nextParticleSystem; - Vec3f lastPos; - Vec3f startPos; - Vec3f endPos; - Vec3f flatPos; + Vec3d lastPos; + Vec3d startPos; + Vec3d endPos; + Vec3d flatPos; - Vec3f xVector; - Vec3f yVector; - Vec3f zVector; + Vec3d xVector; + Vec3d yVector; + Vec3d zVector; Trajectory trajectory; double trajectorySpeed; @@ -550,7 +555,7 @@ public: void setTrajectoryScale(double trajectoryScale) {this->trajectoryScale= trajectoryScale;} void setTrajectoryFrequency(double trajectoryFrequency) {this->trajectoryFrequency= trajectoryFrequency;} - void setPath(Vec3f startPos, Vec3f endPos); + void setPath(Vec3d startPos, Vec3d endPos); static Trajectory strToTrajectory(const string &str); diff --git a/source/shared_lib/sources/graphics/gl/particle_renderer_gl.cpp b/source/shared_lib/sources/graphics/gl/particle_renderer_gl.cpp index bc0d5bd2..9bb1138b 100644 --- a/source/shared_lib/sources/graphics/gl/particle_renderer_gl.cpp +++ b/source/shared_lib/sources/graphics/gl/particle_renderer_gl.cpp @@ -109,8 +109,8 @@ void ParticleRendererGl::renderSystem(ParticleSystem *ps){ for(int i=0; igetAliveParticleCount(); ++i){ const Particle *particle= ps->getParticle(i); float size= particle->getSize()/2.0f; - Vec3f pos= particle->getPos(); - Vec4f color= particle->getColor(); + Vec3f pos= particle->getPosAsFloat(); + Vec4f color= particle->getColorAsFloat(); vertexBuffer[bufferIndex] = pos - (rightVector - upVector) * size; vertexBuffer[bufferIndex+1] = pos - (rightVector + upVector) * size; @@ -157,10 +157,10 @@ void ParticleRendererGl::renderSystemLine(ParticleSystem *ps){ for(int i=0; igetAliveParticleCount(); ++i){ particle= ps->getParticle(i); - Vec4f color= particle->getColor(); + Vec4f color= particle->getColorAsFloat(); - vertexBuffer[bufferIndex] = particle->getPos(); - vertexBuffer[bufferIndex+1] = particle->getLastPos(); + vertexBuffer[bufferIndex] = particle->getPosAsFloat(); + vertexBuffer[bufferIndex+1] = particle->getLastPosAsFloat(); colorBuffer[bufferIndex]= color; colorBuffer[bufferIndex+1]= color; @@ -201,10 +201,10 @@ void ParticleRendererGl::renderSystemLineAlpha(ParticleSystem *ps){ for(int i=0; igetAliveParticleCount(); ++i){ particle= ps->getParticle(i); - Vec4f color= particle->getColor(); + Vec4f color= particle->getColorAsFloat(); - vertexBuffer[bufferIndex] = particle->getPos(); - vertexBuffer[bufferIndex+1] = particle->getLastPos(); + vertexBuffer[bufferIndex] = particle->getPosAsFloat(); + vertexBuffer[bufferIndex+1] = particle->getLastPosAsFloat(); colorBuffer[bufferIndex]= color; colorBuffer[bufferIndex+1]= color; @@ -236,11 +236,11 @@ void ParticleRendererGl::renderModel(GameParticleSystem *ps, ModelRenderer *mr){ glPushMatrix(); //translate - Vec3f pos= ps->getPos(); + Vec3f pos= ps->getPosAsFloat(); glTranslatef(pos.x, pos.y, pos.z); //rotate - Vec3f direction= ps->getDirection(); + Vec3f direction= ps->getDirectionAsFloat(); Vec3f flatDirection= Vec3f(direction.x, 0.f, direction.z); Vec3f rotVector= Vec3f(0.f, 1.f, 0.f).cross(flatDirection); diff --git a/source/shared_lib/sources/graphics/particle.cpp b/source/shared_lib/sources/graphics/particle.cpp index 29c5d32c..4ee129a4 100644 --- a/source/shared_lib/sources/graphics/particle.cpp +++ b/source/shared_lib/sources/graphics/particle.cpp @@ -65,15 +65,15 @@ void Particle::loadGame(const XmlNode *rootNode) { //particleNode = aiNode->getAttribute("startLoc")->getIntValue(); // Vec3f pos; - pos = Vec3f::strToVec3(particleNode->getAttribute("pos")->getValue()); + pos = Vec3d::strToVec3(particleNode->getAttribute("pos")->getValue()); // Vec3f lastPos; - lastPos = Vec3f::strToVec3(particleNode->getAttribute("lastPos")->getValue()); + lastPos = Vec3d::strToVec3(particleNode->getAttribute("lastPos")->getValue()); // Vec3f speed; - speed = Vec3f::strToVec3(particleNode->getAttribute("speed")->getValue()); + speed = Vec3d::strToVec3(particleNode->getAttribute("speed")->getValue()); // Vec3f accel; - accel = Vec3f::strToVec3(particleNode->getAttribute("accel")->getValue()); + accel = Vec3d::strToVec3(particleNode->getAttribute("accel")->getValue()); // Vec4f color; - color = Vec4f::strToVec4(particleNode->getAttribute("color")->getValue()); + color = Vec4d::strToVec4(particleNode->getAttribute("color")->getValue()); // float size; size = particleNode->getAttribute("size")->getFloatValue(); // int energy; @@ -112,9 +112,9 @@ ParticleSystem::ParticleSystem(int particleCount) { //this->particleCount= particles.size(); maxParticleEnergy= 250; varParticleEnergy= 50; - pos= Vec3f(0.0f); - color= Vec4f(1.0f); - colorNoEnergy= Vec4f(0.0f); + pos= Vec3d(0.0f); + color= Vec4d(1.0f); + colorNoEnergy= Vec4d(0.0f); emissionRate= 15.0f; emissionState= 1.0f; // initialized with 1 because we must have at least one particle in the beginning! speed= 1.0f; @@ -251,17 +251,17 @@ void ParticleSystem::setTexture(Texture *texture){ this->texture= texture; } -void ParticleSystem::setPos(Vec3f pos){ +void ParticleSystem::setPos(Vec3d pos){ this->pos= pos; for(int i=getChildCount()-1; i>=0; i--) getChild(i)->setPos(pos); } -void ParticleSystem::setColor(Vec4f color){ +void ParticleSystem::setColor(Vec4d color){ this->color= color; } -void ParticleSystem::setColorNoEnergy(Vec4f colorNoEnergy){ +void ParticleSystem::setColorNoEnergy(Vec4d colorNoEnergy){ this->colorNoEnergy= colorNoEnergy; } @@ -485,11 +485,11 @@ void ParticleSystem::loadGame(const XmlNode *rootNode) { } // Vec3f pos; - pos = Vec3f::strToVec3(particleSystemNode->getAttribute("pos")->getValue()); + pos = Vec3d::strToVec3(particleSystemNode->getAttribute("pos")->getValue()); // Vec4f color; - color = Vec4f::strToVec4(particleSystemNode->getAttribute("color")->getValue()); + color = Vec4d::strToVec4(particleSystemNode->getAttribute("color")->getValue()); // Vec4f colorNoEnergy; - colorNoEnergy = Vec4f::strToVec4(particleSystemNode->getAttribute("colorNoEnergy")->getValue()); + colorNoEnergy = Vec4d::strToVec4(particleSystemNode->getAttribute("colorNoEnergy")->getValue()); // float emissionRate; emissionRate = particleSystemNode->getAttribute("emissionRate")->getFloatValue(); // float emissionState; @@ -503,7 +503,7 @@ void ParticleSystem::loadGame(const XmlNode *rootNode) { // float speed; speed = particleSystemNode->getAttribute("speed")->getFloatValue(); // Vec3f factionColor; - factionColor = Vec3f::strToVec3(particleSystemNode->getAttribute("factionColor")->getValue()); + factionColor = Vec3d::strToVec3(particleSystemNode->getAttribute("factionColor")->getValue()); // bool teamcolorNoEnergy; teamcolorNoEnergy = particleSystemNode->getAttribute("teamcolorNoEnergy")->getIntValue() != 0; // bool teamcolorEnergy; @@ -601,9 +601,9 @@ Particle * ParticleSystem::createParticle(){ void ParticleSystem::initParticle(Particle *p, int particleIndex){ p->pos= pos; p->lastPos= p->pos; - p->speed= Vec3f(0.0f); - p->accel= Vec3f(0.0f); - p->color= Vec4f(1.0f, 1.0f, 1.0f, 1.0); + p->speed= Vec3d(0.0f); + p->accel= Vec3d(0.0f); + p->color= Vec4d(1.0f, 1.0f, 1.0f, 1.0); p->size= particleSize; p->energy= maxParticleEnergy + random.randRange(-varParticleEnergy, varParticleEnergy); } @@ -623,15 +623,15 @@ void ParticleSystem::killParticle(Particle *p){ aliveParticleCount--; } -void ParticleSystem::setFactionColor(Vec3f factionColor){ +void ParticleSystem::setFactionColor(Vec3d factionColor){ this->factionColor= factionColor; - Vec3f tmpCol; + Vec3d tmpCol; if(teamcolorEnergy){ - this->color= Vec4f(factionColor.x, factionColor.y, factionColor.z, this->color.w); + this->color= Vec4d(factionColor.x, factionColor.y, factionColor.z, this->color.w); } if(teamcolorNoEnergy){ - this->colorNoEnergy= Vec4f(factionColor.x, factionColor.y, factionColor.z, this->colorNoEnergy.w); + this->colorNoEnergy= Vec4d(factionColor.x, factionColor.y, factionColor.z, this->colorNoEnergy.w); } for(int i=getChildCount()-1; i>=0; i--) getChild(i)->setFactionColor(factionColor); @@ -647,10 +647,10 @@ FireParticleSystem::FireParticleSystem(int particleCount) : radius= 0.5f; speed= 0.01f; - windSpeed= Vec3f(0.0f); + windSpeed= Vec3d(0.0f); setParticleSize(0.6f); - setColorNoEnergy(Vec4f(1.0f, 0.5f, 0.0f, 1.0f)); + setColorNoEnergy(Vec4d(1.0f, 0.5f, 0.0f, 1.0f)); } void FireParticleSystem::initParticle(Particle *p, int particleIndex){ @@ -676,10 +676,10 @@ void FireParticleSystem::initParticle(Particle *p, int particleIndex){ p->color= colorNoEnergy * 0.5f + colorNoEnergy * 0.5f * radRatio; p->energy= static_cast (maxParticleEnergy * radRatio) + random.randRange(-varParticleEnergy, varParticleEnergy); - p->pos= Vec3f(pos.x + x, pos.y + random.randRange(-radius / 2, radius / 2), pos.z + y); + p->pos= Vec3d(pos.x + x, pos.y + random.randRange(-radius / 2, radius / 2), pos.z + y); p->lastPos= pos; p->size= particleSize; - p->speed= Vec3f(0, speed + speed * random.randRange(-0.5f, 0.5f), 0) + windSpeed; + p->speed= Vec3d(0, speed + speed * random.randRange(-0.5f, 0.5f), 0) + windSpeed; } void FireParticleSystem::updateParticle(Particle *p){ @@ -744,7 +744,7 @@ void FireParticleSystem::loadGame(const XmlNode *rootNode) { // float radius; radius = fireParticleSystemNode->getAttribute("radius")->getFloatValue(); // Vec3f windSpeed; - windSpeed = Vec3f::strToVec3(fireParticleSystemNode->getAttribute("windSpeed")->getValue()); + windSpeed = Vec3d::strToVec3(fireParticleSystemNode->getAttribute("windSpeed")->getValue()); } Checksum FireParticleSystem::getCRC() { @@ -810,18 +810,18 @@ void GameParticleSystem::removeChild(UnitParticleSystem* child){ children.erase(it); } -void GameParticleSystem::setPos(Vec3f pos){ +void GameParticleSystem::setPos(Vec3d pos){ this->pos= pos; positionChildren(); } void GameParticleSystem::positionChildren() { - Vec3f child_pos = pos - offset; + Vec3d child_pos = pos - offset; for(int i=getChildCount()-1; i>=0; i--) getChild(i)->setPos(child_pos); } -void GameParticleSystem::setOffset(Vec3f offset){ +void GameParticleSystem::setOffset(Vec3d offset){ this->offset= offset; positionChildren(); } @@ -952,9 +952,9 @@ void GameParticleSystem::loadGame(const XmlNode *rootNode) { //gameParticleSystemNode->addAttribute("modelCycle",floatToStr(modelCycle), mapTagReplacements); modelCycle = gameParticleSystemNode->getAttribute("modelCycle")->getFloatValue(); // Vec3f offset; - offset = Vec3f::strToVec3(gameParticleSystemNode->getAttribute("offset")->getValue()); + offset = Vec3d::strToVec3(gameParticleSystemNode->getAttribute("offset")->getValue()); // Vec3f direction; - direction = Vec3f::strToVec3(gameParticleSystemNode->getAttribute("direction")->getValue()); + direction = Vec3d::strToVec3(gameParticleSystemNode->getAttribute("direction")->getValue()); // float tween; tween = gameParticleSystemNode->getAttribute("tween")->getFloatValue(); } @@ -986,17 +986,17 @@ string GameParticleSystem::toString() const { // UnitParticleSystem // =========================================================================== bool UnitParticleSystem::isNight= false; -Vec3f UnitParticleSystem::lightColor=Vec3f(1.0f,1.0f,1.0f); +Vec3d UnitParticleSystem::lightColor=Vec3d(1.0f,1.0f,1.0f); UnitParticleSystem::UnitParticleSystem(int particleCount) : GameParticleSystem(particleCount), parent(NULL) { radius= 0.5f; speed= 0.01f; - windSpeed= Vec3f(0.0f); + windSpeed= Vec3d(0.0f); minRadius = 0.0; setParticleSize(0.6f); - setColorNoEnergy(Vec4f(1.0f, 0.5f, 0.0f, 1.0f)); + setColorNoEnergy(Vec4d(1.0f, 0.5f, 0.0f, 1.0f)); sizeNoEnergy=1.0f; primitive= pQuad; @@ -1014,8 +1014,8 @@ UnitParticleSystem::UnitParticleSystem(int particleCount) : isVisibleAtDay= true; isDaylightAffected= false; - cRotation= Vec3f(1.0f, 1.0f, 1.0f); - fixedAddition= Vec3f(0.0f, 0.0f, 0.0f); + cRotation= Vec3d(1.0f, 1.0f, 1.0f); + fixedAddition= Vec3d(0.0f, 0.0f, 0.0f); //prepare system for given staticParticleCount if(staticParticleCount > 0){ emissionState= (double) staticParticleCount; @@ -1108,7 +1108,7 @@ void UnitParticleSystem::initParticle(Particle *p, int particleIndex){ p->lastPos= pos; oldPosition= pos; p->size= particleSize; - p->accel= Vec3f(0.0f, -gravity, 0.0f); + p->accel= Vec3d(0.0f, -gravity, 0.0f); // work out where we start for our shape (set speed and pos) switch(shape){ @@ -1116,9 +1116,9 @@ void UnitParticleSystem::initParticle(Particle *p, int particleIndex){ angle = (double)random.randRange(0,360); // fall through case sConical:{ - Vec2f horiz = Vec2f(1,0).rotate(ang); - Vec2f vert = Vec2f(1,0).rotate(degToRad(angle)); - Vec3f start = Vec3f(horiz.x*vert.y,vert.x,horiz.y).getNormalized(); // close enough + Vec2d horiz = Vec2d(1,0).rotate(ang); + Vec2d vert = Vec2d(1,0).rotate(degToRad(angle)); + Vec3d start = Vec3d(horiz.x*vert.y,vert.x,horiz.y).getNormalized(); // close enough p->speed = start * speed; start = start * random.randRange(minRadius,radius); p->pos = pos + offset + start; @@ -1133,25 +1133,25 @@ void UnitParticleSystem::initParticle(Particle *p, int particleIndex){ #endif const double rad= degToRad(rotation); if(!relative){ - p->pos= Vec3f(pos.x + x + offset.x, pos.y + random.randRange(-radius / 2, radius / 2) + offset.y, pos.z + y + p->pos= Vec3d(pos.x + x + offset.x, pos.y + random.randRange(-radius / 2, radius / 2) + offset.y, pos.z + y + offset.z); } else{// rotate it according to rotation #ifdef USE_STREFLOP - p->pos= Vec3f(pos.x+x+offset.z*streflop::sinf(static_cast(rad))+offset.x*streflop::cosf(static_cast(rad)), pos.y+random.randRange(-radius/2, radius/2)+offset.y, pos.z+y+(offset.z*streflop::cosf(static_cast(rad))-offset.x*streflop::sinf(static_cast(rad)))); + p->pos= Vec3d(pos.x+x+offset.z*streflop::sinf(static_cast(rad))+offset.x*streflop::cosf(static_cast(rad)), pos.y+random.randRange(-radius/2, radius/2)+offset.y, pos.z+y+(offset.z*streflop::cosf(static_cast(rad))-offset.x*streflop::sinf(static_cast(rad)))); #else - p->pos= Vec3f(pos.x + x + offset.z * sinf(rad) + offset.x * cosf(rad), pos.y + random.randRange(-radius / 2, + p->pos= Vec3d(pos.x + x + offset.z * sinf(rad) + offset.x * cosf(rad), pos.y + random.randRange(-radius / 2, radius / 2) + offset.y, pos.z + y + (offset.z * cosf(rad) - offset.x * sinf(rad))); #endif } - p->speed= Vec3f(direction.x + direction.x * random.randRange(-0.5f, 0.5f), direction.y + direction.y + p->speed= Vec3d(direction.x + direction.x * random.randRange(-0.5f, 0.5f), direction.y + direction.y * random.randRange(-0.5f, 0.5f), direction.z + direction.z * random.randRange(-0.5f, 0.5f)); p->speed= p->speed * speed; if(relative && relativeDirection){ #ifdef USE_STREFLOP - p->speed=Vec3f(p->speed.z*streflop::sinf(static_cast(rad))+p->speed.x*streflop::cosf(static_cast(rad)),p->speed.y,(p->speed.z*streflop::cosf(static_cast(rad))-p->speed.x*streflop::sinf(static_cast(rad)))); + p->speed=Vec3d(p->speed.z*streflop::sinf(static_cast(rad))+p->speed.x*streflop::cosf(static_cast(rad)),p->speed.y,(p->speed.z*streflop::cosf(static_cast(rad))-p->speed.x*streflop::sinf(static_cast(rad)))); #else - p->speed= Vec3f(p->speed.z * sinf(rad) + p->speed.x * cosf(rad), p->speed.y, (p->speed.z * cosf(rad) + p->speed= Vec3d(p->speed.z * sinf(rad) + p->speed.x * cosf(rad), p->speed.y, (p->speed.z * cosf(rad) - p->speed.x * sinf(rad))); #endif } @@ -1175,7 +1175,7 @@ void UnitParticleSystem::update(){ } } if(fixed){ - fixedAddition= Vec3f(pos.x - oldPosition.x, pos.y - oldPosition.y, pos.z - oldPosition.z); + fixedAddition= Vec3d(pos.x - oldPosition.x, pos.y - oldPosition.y, pos.z - oldPosition.z); oldPosition= pos; } ParticleSystem::update(); @@ -1323,13 +1323,13 @@ void UnitParticleSystem::loadGame(const XmlNode *rootNode) { // float minRadius; minRadius = unitParticleSystemNode->getAttribute("minRadius")->getFloatValue(); // Vec3f windSpeed; - windSpeed = Vec3f::strToVec3(unitParticleSystemNode->getAttribute("windSpeed")->getValue()); + windSpeed = Vec3d::strToVec3(unitParticleSystemNode->getAttribute("windSpeed")->getValue()); // Vec3f cRotation; - windSpeed = Vec3f::strToVec3(unitParticleSystemNode->getAttribute("cRotation")->getValue()); + windSpeed = Vec3d::strToVec3(unitParticleSystemNode->getAttribute("cRotation")->getValue()); // Vec3f fixedAddition; - fixedAddition = Vec3f::strToVec3(unitParticleSystemNode->getAttribute("fixedAddition")->getValue()); + fixedAddition = Vec3d::strToVec3(unitParticleSystemNode->getAttribute("fixedAddition")->getValue()); // Vec3f oldPosition; - oldPosition = Vec3f::strToVec3(unitParticleSystemNode->getAttribute("oldPosition")->getValue()); + oldPosition = Vec3d::strToVec3(unitParticleSystemNode->getAttribute("oldPosition")->getValue()); // bool energyUp; energyUp = unitParticleSystemNode->getAttribute("energyUp")->getIntValue() != 0; // float startTime; @@ -1434,7 +1434,7 @@ RainParticleSystem::RainParticleSystem(int particleCount) : setEmissionRate(25.0f); setParticleSize(3.0f); - setColor(Vec4f(0.5f, 0.5f, 0.5f, 0.3f)); + setColor(Vec4d(0.5f, 0.5f, 0.5f, 0.3f)); setSpeed(0.2f); } @@ -1450,9 +1450,9 @@ void RainParticleSystem::initParticle(Particle *p, int particleIndex){ p->color= color; p->energy= 10000; - p->pos= Vec3f(pos.x + x, pos.y, pos.z + y); + p->pos= Vec3d(pos.x + x, pos.y, pos.z + y); p->lastPos= p->pos; - p->speed= Vec3f(random.randRange(-speed / 10, speed / 10), -speed, random.randRange(-speed / 10, speed / 10)) + p->speed= Vec3d(random.randRange(-speed / 10, speed / 10), -speed, random.randRange(-speed / 10, speed / 10)) + windSpeed; } @@ -1504,7 +1504,7 @@ SnowParticleSystem::SnowParticleSystem(int particleCount) : setEmissionRate(2.0f); setParticleSize(0.2f); - setColor(Vec4f(0.8f, 0.8f, 0.8f, 0.8f)); + setColor(Vec4d(0.8f, 0.8f, 0.8f, 0.8f)); setSpeed(0.05f); } @@ -1517,9 +1517,9 @@ void SnowParticleSystem::initParticle(Particle *p, int particleIndex){ p->color= color; p->energy= 10000; - p->pos= Vec3f(pos.x + x, pos.y, pos.z + y); + p->pos= Vec3d(pos.x + x, pos.y, pos.z + y); p->lastPos= p->pos; - p->speed= Vec3f(0.0f, -speed, 0.0f) + windSpeed; + p->speed= Vec3d(0.0f, -speed, 0.0f) + windSpeed; p->speed.x+= random.randRange(-0.005f, 0.005f); p->speed.y+= random.randRange(-0.005f, 0.005f); } @@ -1617,7 +1617,7 @@ string AttackParticleSystem::toString() const { ProjectileParticleSystem::ProjectileParticleSystem(int particleCount) : AttackParticleSystem(particleCount){ setEmissionRate(20.0f); - setColor(Vec4f(1.0f, 0.3f, 0.0f, 0.5f)); + setColor(Vec4d(1.0f, 0.3f, 0.0f, 0.5f)); setMaxParticleEnergy(100); setVarParticleEnergy(50); setParticleSize(0.4f); @@ -1658,12 +1658,12 @@ void ProjectileParticleSystem::update(){ flatPos.y = truncateDecimal(flatPos.y); flatPos.z = truncateDecimal(flatPos.z); - Vec3f targetVector = endPos - startPos; + Vec3d targetVector = endPos - startPos; targetVector.x = truncateDecimal(targetVector.x); targetVector.y = truncateDecimal(targetVector.y); targetVector.z = truncateDecimal(targetVector.z); - Vec3f currentVector = flatPos - startPos; + Vec3d currentVector = flatPos - startPos; currentVector.x = truncateDecimal(currentVector.x); currentVector.y = truncateDecimal(currentVector.y); currentVector.z = truncateDecimal(currentVector.z); @@ -1775,9 +1775,9 @@ void ProjectileParticleSystem::initParticle(Particle *p, int particleIndex){ p->pos= pos + (lastPos - pos) * t; p->lastPos= lastPos; - p->speed= Vec3f(random.randRange(-0.1f, 0.1f), random.randRange(-0.1f, 0.1f), random.randRange(-0.1f, 0.1f)) + p->speed= Vec3d(random.randRange(-0.1f, 0.1f), random.randRange(-0.1f, 0.1f), random.randRange(-0.1f, 0.1f)) * speed; - p->accel= Vec3f(0.0f, -gravity, 0.0f); + p->accel= Vec3d(0.0f, -gravity, 0.0f); updateParticle(p); } @@ -1794,12 +1794,12 @@ void ProjectileParticleSystem::updateParticle(Particle *p){ p->energy--; } -void ProjectileParticleSystem::setPath(Vec3f startPos, Vec3f endPos){ +void ProjectileParticleSystem::setPath(Vec3d startPos, Vec3d endPos){ //compute axis zVector= endPos - startPos; zVector.normalize(); - yVector= Vec3f(0.0f, 1.0f, 0.0f); + yVector= Vec3d(0.0f, 1.0f, 0.0f); xVector= zVector.cross(yVector); //apply offset @@ -1814,7 +1814,7 @@ void ProjectileParticleSystem::setPath(Vec3f startPos, Vec3f endPos){ //recompute axis zVector= endPos - startPos; zVector.normalize(); - yVector= Vec3f(0.0f, 1.0f, 0.0f); + yVector= Vec3d(0.0f, 1.0f, 0.0f); xVector= zVector.cross(yVector); // set members @@ -1894,20 +1894,20 @@ void ProjectileParticleSystem::loadGame(const XmlNode *rootNode) { nextParticleSystem->loadGame(splashParticleSystemNode); } // Vec3f lastPos; - lastPos = Vec3f::strToVec3(projectileParticleSystemNode->getAttribute("lastPos")->getValue()); + lastPos = Vec3d::strToVec3(projectileParticleSystemNode->getAttribute("lastPos")->getValue()); // Vec3f startPos; - startPos = Vec3f::strToVec3(projectileParticleSystemNode->getAttribute("startPos")->getValue()); + startPos = Vec3d::strToVec3(projectileParticleSystemNode->getAttribute("startPos")->getValue()); // Vec3f endPos; - endPos = Vec3f::strToVec3(projectileParticleSystemNode->getAttribute("endPos")->getValue()); + endPos = Vec3d::strToVec3(projectileParticleSystemNode->getAttribute("endPos")->getValue()); // Vec3f flatPos; - flatPos = Vec3f::strToVec3(projectileParticleSystemNode->getAttribute("flatPos")->getValue()); + flatPos = Vec3d::strToVec3(projectileParticleSystemNode->getAttribute("flatPos")->getValue()); // // Vec3f xVector; - xVector = Vec3f::strToVec3(projectileParticleSystemNode->getAttribute("xVector")->getValue()); + xVector = Vec3d::strToVec3(projectileParticleSystemNode->getAttribute("xVector")->getValue()); // Vec3f yVector; - yVector = Vec3f::strToVec3(projectileParticleSystemNode->getAttribute("yVector")->getValue()); + yVector = Vec3d::strToVec3(projectileParticleSystemNode->getAttribute("yVector")->getValue()); // Vec3f zVector; - zVector = Vec3f::strToVec3(projectileParticleSystemNode->getAttribute("zVector")->getValue()); + zVector = Vec3d::strToVec3(projectileParticleSystemNode->getAttribute("zVector")->getValue()); // Trajectory trajectory; trajectory = static_cast(projectileParticleSystemNode->getAttribute("trajectory")->getIntValue()); // float trajectorySpeed; @@ -1958,7 +1958,7 @@ string ProjectileParticleSystem::toString() const { SplashParticleSystem::SplashParticleSystem(int particleCount) : AttackParticleSystem(particleCount){ - setColor(Vec4f(1.0f, 0.3f, 0.0f, 0.8f)); + setColor(Vec4d(1.0f, 0.3f, 0.0f, 0.8f)); setMaxParticleEnergy(100); setVarParticleEnergy(50); setParticleSize(1.0f); @@ -2008,13 +2008,13 @@ void SplashParticleSystem::initParticle(Particle *p, int particleIndex){ p->size= particleSize; p->color= color; - p->speed= Vec3f(horizontalSpreadA * random.randRange(-1.0f, 1.0f) + horizontalSpreadB, verticalSpreadA + p->speed= Vec3d(horizontalSpreadA * random.randRange(-1.0f, 1.0f) + horizontalSpreadB, verticalSpreadA * random.randRange(-1.0f, 1.0f) + verticalSpreadB, horizontalSpreadA * random.randRange(-1.0f, 1.0f) + horizontalSpreadB); p->speed.normalize(); p->speed= p->speed * speed; - p->accel= Vec3f(0.0f, -gravity, 0.0f); + p->accel= Vec3d(0.0f, -gravity, 0.0f); } void SplashParticleSystem::updateParticle(Particle *p){