Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 3938 in orxonox.OLD for orxonox/branches/particleEngine/src/lib


Ignore:
Timestamp:
Apr 23, 2005, 4:48:57 AM (20 years ago)
Author:
bensch
Message:

orxonox/branches/particleEngine: inherit speed from emitter is now also an option
for this i had to write a new PNode function, getVelocity (patrick: you could also use this one in the shoot-class, maybe).

Location:
orxonox/branches/particleEngine/src/lib
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • orxonox/branches/particleEngine/src/lib/coord/p_node.cc

    r3860 r3938  
    307307}
    308308
     309/**
     310   \returns the Velocity of the PNode
     311*/
     312Vector PNode::getVelocity() const
     313{
     314  return (*this->absCoordinate - *this->lastAbsCoordinate) / this->time;
     315}
    309316
    310317/**
  • orxonox/branches/particleEngine/src/lib/coord/p_node.h

    r3813 r3938  
    7070
    7171  float getSpeed() const;
     72  Vector getVelocity() const;
    7273
    7374  void addChild (PNode* pNode, int parentingMode = DEFAULT_MODE);
  • orxonox/branches/particleEngine/src/lib/graphics/particles/particle_emitter.cc

    r3936 r3938  
    1010
    1111   ### File Specific:
    12    main-programmer: ...
     12   main-programmer: Benjamin Grauer
    1313   co-programmer: Patrick Boenzli
    1414*/
    1515
    16 //#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
     16#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_PARTICLE
    1717
    1818#include "particle_emitter.h"
     
    132132      randDir.normalize();
    133133      randDir = (this->getAbsDir()*Quaternion(angle + randomAngle *((float)random()/RAND_MAX -.5), randDir)).apply(this->direction);
    134       randDir.normalize();
     134      randDir = *randDir.getNormalized() + (this->getVelocity() * system->inheritSpeed);
     135
    135136      system->addParticle(this->getAbsCoor(), randDir* velocity);
    136137    }
  • orxonox/branches/particleEngine/src/lib/graphics/particles/particle_engine.cc

    r3937 r3938  
    1414*/
    1515
    16 //#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
     16#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_PARTICLE
    1717
    1818#include "particle_engine.h"
     
    145145    }
    146146  delete tmpIt;
    147 
    148147}
    149148
  • orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.cc

    r3936 r3938  
    4242   this->setConserve(.8);
    4343   this->setLifeSpan(.1);
     44   this->setInheritSpeed(0);
    4445
    4546   ParticleEngine::getInstance()->addSystem(this);
     
    6263  this->material = material;
    6364}
     65
     66
     67/**
     68   \brief how much of the speed from the ParticleEmitter should flow onto the ParticleSystem
     69   \param value a Value between zero and one
     70
     71   
     72   if you want to change the value of this variable during emission time (to make it more dynamic)
     73   you may want to use the animation class
     74*/
     75void ParticleSystem::setInheritSpeed(float value)
     76{
     77  if (unlikely(value > 1.0))
     78    this->inheritSpeed = 1;
     79  else if (unlikely(value < 0.0))
     80    this->inheritSpeed = 0;
     81  else
     82    this->inheritSpeed = value;
     83}
     84
    6485
    6586void ParticleSystem::setLifeSpan(float lifeSpan, float randomLifeSpan)
  • orxonox/branches/particleEngine/src/lib/graphics/particles/particle_system.h

    r3936 r3938  
    4949
    5050  void setMaterial(Material* material);
     51  void setInheritSpeed(float value);
    5152  void setLifeSpan(float lifeSpan, float randomLifeSpan = 0.0);
    5253  void setRadius(float startRadius, float endRadius, float randomRadius = 0.0);
     
    6667  float initialMass;
    6768  float randomInitialMass;
    68  
     69  float inheritSpeed;
     70
    6971  // particles
    7072  int maxCount;              //!< The maximum count of Particles.
Note: See TracChangeset for help on using the changeset viewer.