Changeset 6873 in orxonox.OLD for trunk/src/lib/particles/plane_emitter.cc
- Timestamp:
- Jan 30, 2006, 10:43:00 PM (19 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/particles/plane_emitter.cc
r6870 r6873 16 16 #define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GRAPHICS 17 17 18 #include " box_emitter.h"18 #include "plane_emitter.h" 19 19 20 20 #include "particle_system.h" … … 28 28 29 29 30 CREATE_FACTORY( BoxEmitter, CL_BOX_EMITTER);30 CREATE_FACTORY(PlaneEmitter, CL_PLANE_EMITTER); 31 31 32 32 /** 33 33 * standard constructor 34 34 */ 35 BoxEmitter::BoxEmitter(const Vector& size, float emissionRate, float velocity, float angle)35 PlaneEmitter::PlaneEmitter(const Vector2D& size, float emissionRate, float velocity, float angle) 36 36 : ParticleEmitter(emissionRate, velocity, angle) 37 37 { … … 41 41 42 42 /** 43 * constructs and loads a BoxEmitter from a XML-element43 * constructs and loads a PlaneEmitter from a XML-element 44 44 * @param root the XML-element to load from 45 45 */ 46 BoxEmitter::BoxEmitter(const TiXmlElement* root)46 PlaneEmitter::PlaneEmitter(const TiXmlElement* root) 47 47 : ParticleEmitter() 48 48 { … … 58 58 removes the EmitterSystem from the ParticleEngine 59 59 */ 60 BoxEmitter::~BoxEmitter ()60 PlaneEmitter::~PlaneEmitter () 61 61 { 62 62 this->setSystem(NULL); … … 66 66 @brief initializes default values of a ParitcleEmitter 67 67 */ 68 void BoxEmitter::init()68 void PlaneEmitter::init() 69 69 { 70 this->setClassID(CL_ BOX_EMITTER, "BoxEmitter");71 this->setSize(1.0f, 1.0f,1.0f);70 this->setClassID(CL_PLANE_EMITTER, "PlaneEmitter"); 71 this->setSize(1.0f, 1.0f); 72 72 } 73 73 74 void BoxEmitter::loadParams(const TiXmlElement* root)74 void PlaneEmitter::loadParams(const TiXmlElement* root) 75 75 { 76 76 ParticleEmitter::loadParams(root); 77 77 78 LoadParam(root, "size", this, BoxEmitter, setSize)79 .describe("The Size of the BoxEmitter: x, y, z")80 .defaultValues( 3, 1.0f,1.0f,1.0f);78 LoadParam(root, "size", this, PlaneEmitter, setSize) 79 .describe("The Size of the PlaneEmitter: x, y") 80 .defaultValues(2, 1.0f,1.0f); 81 81 } 82 82 83 void BoxEmitter::setSize(float x, float y, float z)83 void PlaneEmitter::setSize(float x, float y) 84 84 { 85 this->size = Vector (x,y,z);85 this->size = Vector2D(x, y); 86 86 } 87 87 88 88 89 void BoxEmitter::emitParticles(unsigned int count) const89 void PlaneEmitter::emitParticles(unsigned int count) const 90 90 { 91 91 Vector inheritVelocity = this->getVelocity() * this->inheritSpeed; 92 92 93 93 Vector xDir = this->getAbsDirX() * this->size.x; 94 Vector yDir = this->getAbsDir Y() * this->size.y;95 Vector zDir = this->getAbsDir Z() * this->size.z;94 Vector yDir = this->getAbsDirZ() * this->size.y; 95 Vector zDir = this->getAbsDirY(); 96 96 97 97 for (unsigned int i = 0; i < count; i++) … … 99 99 Vector randDir = Vector(rand()-RAND_MAX/2, rand()-RAND_MAX/2, rand()-RAND_MAX/2); 100 100 randDir.normalize(); 101 randDir = (Quaternion(angle + randomAngle *((float)rand()/RAND_MAX -.5), randDir)).apply( this->getAbsDirX());101 randDir = (Quaternion(angle + randomAngle *((float)rand()/RAND_MAX -.5), randDir)).apply(zDir); 102 102 Vector velocityV = randDir.getNormalized()*this->velocity + inheritVelocity; 103 103 104 Vector box= this->getAbsCoor() +104 Vector plane = this->getAbsCoor() + 105 105 xDir * ((float)rand()/RAND_MAX -.5) + 106 yDir * ((float)rand()/RAND_MAX -.5) + 107 zDir * ((float)rand()/RAND_MAX -.5); 106 yDir * ((float)rand()/RAND_MAX -.5); 108 107 109 108 // ROTATIONAL CALCULATION (this must not be done for all types of particles.) … … 113 112 Quaternion moment = Quaternion(this->momentum + this->momentumRandom, randDir); 114 113 115 this->getSystem()->addParticle( box, velocityV, orient, moment);114 this->getSystem()->addParticle(plane, velocityV, orient, moment); 116 115 117 116 }
Note: See TracChangeset
for help on using the changeset viewer.