Changeset 5456 in orxonox.OLD for trunk/src/world_entities/weapons/laser.cc
- Timestamp:
- Oct 30, 2005, 12:54:23 AM (19 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/world_entities/weapons/laser.cc
r5451 r5456 16 16 #define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON 17 17 18 #include " test_bullet.h"18 #include "laser.h" 19 19 20 20 #include "fast_factory.h" … … 31 31 using namespace std; 32 32 33 CREATE_FAST_FACTORY_STATIC( TestBullet, CL_TEST_BULLET);33 CREATE_FAST_FACTORY_STATIC(Laser, CL_LASER); 34 34 35 35 /** 36 36 * standard constructor 37 37 */ 38 TestBullet::TestBullet() : Projectile()38 Laser::Laser () : Projectile() 39 39 { 40 this->setClassID(CL_TEST_BULLET, " TestBullet");40 this->setClassID(CL_TEST_BULLET, "Laser"); 41 41 42 42 float modelSize = .3; 43 this->loadModelWithScale("models/projectiles/ orx-rocket.obj", .3);43 this->loadModelWithScale("models/projectiles/lasers.obj", .3); 44 44 45 45 this->energyMin = 1; … … 51 51 this->emitter->setParent(this); 52 52 this->emitter->setSpread(M_PI, M_PI); 53 this->emitter->setEmissionRate(30.0); 54 this->emitter->setEmissionVelocity(50.0); 53 55 } 54 56 … … 57 59 * standard deconstructor 58 60 */ 59 TestBullet::~TestBullet()61 Laser::~Laser () 60 62 { 61 63 // delete this->emitter; 62 64 63 65 /* this is normaly done by World.cc by deleting the ParticleEngine */ 64 if ( TestBullet::trailParticles != NULL && ClassList::getList(CL_TEST_BULLET)->getSize() <= 1)66 if (Laser::explosionParticles != NULL && ClassList::getList(CL_TEST_BULLET)->getSize() <= 1) 65 67 { 66 if (ClassList::exists(TestBullet::trailParticles, CL_PARTICLE_SYSTEM)) 67 delete TestBullet::trailParticles; 68 TestBullet::trailParticles = NULL; 69 } 70 if (TestBullet::explosionParticles != NULL && ClassList::getList(CL_TEST_BULLET)->getSize() <= 1) 71 { 72 if (ClassList::exists(TestBullet::explosionParticles, CL_PARTICLE_SYSTEM)) 73 delete TestBullet::explosionParticles; 74 TestBullet::explosionParticles = NULL; 68 if (ClassList::exists(Laser::explosionParticles, CL_PARTICLE_SYSTEM)) 69 delete Laser::explosionParticles; 70 Laser::explosionParticles = NULL; 75 71 } 76 72 77 73 } 78 74 79 ParticleSystem* TestBullet::trailParticles = NULL; 80 ParticleSystem* TestBullet::explosionParticles = NULL; 75 ParticleSystem* Laser::explosionParticles = NULL; 81 76 82 void TestBullet::activate()77 void Laser::activate() 83 78 { 84 79 State::getWorldEntityList()->add(this); 85 if (unlikely( TestBullet::trailParticles == NULL))80 if (unlikely(Laser::explosionParticles == NULL)) 86 81 { 87 TestBullet::trailParticles = new ParticleSystem(1000, PARTICLE_SPRITE);88 TestBullet::trailParticles->setName("TestBulletTrailParticles");89 TestBullet::trailParticles->setLifeSpan(.5, .3);90 TestBullet::trailParticles->setRadius(0.0, .5);91 TestBullet::trailParticles->setRadius(0.5, 2.0);92 TestBullet::trailParticles->setRadius(1.0, 5.0);93 TestBullet::trailParticles->setColor(0.0, 1,0,0,.7);94 TestBullet::trailParticles->setColor(0.5, .8,.8,0,.5);95 TestBullet::trailParticles->setColor(1.0, .7,.7,.7,.0);82 Laser::explosionParticles = new ParticleSystem(1000, PARTICLE_SPRITE); 83 Laser::explosionParticles->setName("LaserExplosionParticles"); 84 Laser::explosionParticles->setLifeSpan(.5, .3); 85 Laser::explosionParticles->setRadius(0.0, 10); 86 Laser::explosionParticles->setRadius(.5, 20.0); 87 Laser::explosionParticles->setRadius(1.0, 3.0); 88 Laser::explosionParticles->setColor(0.0, 0,1,0,.9); 89 Laser::explosionParticles->setColor(0.5, .8,.8,0,.5); 90 Laser::explosionParticles->setColor(1.0, 1,1,1,.0); 96 91 } 97 if (unlikely(TestBullet::explosionParticles == NULL))98 {99 TestBullet::explosionParticles = new ParticleSystem(1000, PARTICLE_SPRITE);100 TestBullet::explosionParticles->setName("TestBulletExplosionParticles");101 TestBullet::explosionParticles->setLifeSpan(.5, .3);102 TestBullet::explosionParticles->setRadius(0.0, 10);103 TestBullet::explosionParticles->setRadius(.5, 20.0);104 TestBullet::explosionParticles->setRadius(1.0, 3.0);105 TestBullet::explosionParticles->setColor(0.0, 0,1,0,.9);106 TestBullet::explosionParticles->setColor(0.5, .8,.8,0,.5);107 TestBullet::explosionParticles->setColor(1.0, 1,1,1,.0);108 }109 110 ParticleEngine::getInstance()->addConnection(this->emitter, TestBullet::trailParticles);111 112 this->emitter->setEmissionRate(20.0);113 this->emitter->setEmissionVelocity(3.0);114 92 } 115 93 116 94 117 void TestBullet::deactivate()95 void Laser::deactivate() 118 96 { 119 97 ParticleEngine::getInstance()->breakConnections(this->emitter); … … 122 100 // GarbageCollector::getInstance()->collect(this); 123 101 State::getWorldEntityList()->remove(this); 124 TestBullet::fastFactory->kill(this);102 Laser::fastFactory->kill(this); 125 103 } 126 104 127 105 128 void TestBullet::collidesWith(WorldEntity* entity, const Vector& location)106 void Laser::collidesWith(WorldEntity* entity, const Vector& location) 129 107 { 130 108 if (this->hitEntity != entity && entity->isA(CL_NPC)) … … 137 115 * @param time since last tick 138 116 */ 139 void TestBullet::tick (float time)117 void Laser::tick (float time) 140 118 { 141 119 //Vector v = *this->flightDirection * ( this->speed * time * 1000 + 0.1); … … 157 135 * the function gets called, when the projectile is destroyed 158 136 */ 159 void TestBullet::destroy ()137 void Laser::destroy () 160 138 { 161 PRINTF(5)("DESTROY TestBullet\n");139 PRINTF(5)("DESTROY Laser\n"); 162 140 this->lifeCycle = .95; //!< @todo calculate this usefully. 163 ParticleEngine::getInstance()->breakConnection(this->emitter, TestBullet::trailParticles); 164 ParticleEngine::getInstance()->addConnection(this->emitter, TestBullet::explosionParticles); 165 166 this->emitter->setEmissionRate(30.0); 167 this->emitter->setEmissionVelocity(50.0); 168 // this->deactivate(); 141 ParticleEngine::getInstance()->addConnection(this->emitter, Laser::explosionParticles); 169 142 170 143 } 171 144 172 145 173 void TestBullet::draw ()146 void Laser::draw () 174 147 { 175 148 glMatrixMode(GL_MODELVIEW);
Note: See TracChangeset
for help on using the changeset viewer.