Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 9, 2015, 4:56:39 PM (9 years ago)
Author:
maxima
Message:

Merged presentation and particleEffects branches. Added a new level, spaceshiptemplate and weaponsettings for the mine.

Location:
code/branches/presentationHS15
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentationHS15

  • code/branches/presentationHS15/src/modules/weapons/projectiles/IceGunProjectile.cc

    r10629 r10963  
    3434#include "IceGunProjectile.h"
    3535
     36#include <OgreSceneManager.h>
     37#include <OgreSceneNode.h>
     38
    3639#include "core/CoreIncludes.h"
    3740#include "graphics/Model.h"
     41#include "graphics/ParticleSpawner.h"
     42#include "Scene.h"
     43#include "core/command/Executor.h"
     44#include "tools/ParticleInterface.h"
    3845
    3946namespace orxonox
    4047{
    4148    RegisterClass(IceGunProjectile);
     49
     50    const float IceGunProjectile::particleDestructionDelay_ = 15.0f;
    4251
    4352    IceGunProjectile::IceGunProjectile(Context* context) : Projectile(context)
     
    5564        this->attach(model);
    5665        model->setPosition(Vector3(0,0,0));
     66
     67        // Add effect.
     68        emitter_ = new ParticleEmitter(this->getContext());
     69        this->attach(emitter_);
     70        emitter_->setOrientation(this->getOrientation());
     71        emitter_->setSource("Orxonox/ice");   
     72        emitter_->setDeleteWithParent(false);     
     73    }
     74
     75    IceGunProjectile::~IceGunProjectile()
     76    {
     77        if (this->isInitialized())
     78        {
     79            const Vector3& pos = emitter_->getWorldPosition();
     80            const Quaternion& rot = emitter_->getWorldOrientation();
     81            this->detach(emitter_);
     82            emitter_->setPosition(pos);
     83            emitter_->setOrientation(rot);
     84            emitter_->getParticleInterface()->setEnabled(false);
     85            this->getScene()->getRootSceneNode()->addChild(const_cast<Ogre::SceneNode*>(emitter_->getNode()));
     86
     87            const ExecutorPtr& executor = createExecutor(createFunctor(&ParticleEmitter::destroy, emitter_));
     88            new Timer(particleDestructionDelay_, false, executor, true);
     89        }
    5790    }
    5891
Note: See TracChangeset for help on using the changeset viewer.