00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(AFX_PhysicsParticle_H__53A44445_C8C9_4108_B5E1_744C0AF7A1D5__INCLUDED_)
00022 #define AFX_PhysicsParticle_H__53A44445_C8C9_4108_B5E1_744C0AF7A1D5__INCLUDED_
00023
00024 #include <engine/Action.h>
00025 #include <engine/PhysicsParticleObject.h>
00026
00027 class PhysicsParticle :
00028 public Action,
00029 public PhysicsParticleObjectHandler
00030 {
00031 public:
00032 PhysicsParticle();
00033 virtual ~PhysicsParticle();
00034
00035 virtual void setPhysics(
00036 PhysicsParticleInfo info,
00037 FixedVector &position, FixedVector &velocity,
00038 fixed sphereSize = 0,
00039 fixed sphereDensity = 0,
00040 fixed windFactor = 1,
00041 bool underGroundCollision = false,
00042 bool rotateOnCollision = false,
00043 bool wallCollision = true);
00044 virtual void collision(PhysicsParticleObject &position,
00045 ScorchedCollisionId collisionId);
00046
00047 FixedVector &getCurrentPosition();
00048 FixedVector &getCurrentVelocity();
00049 FixedVector4 &getRotationQuat();
00050 void setCurrentPosition(FixedVector &position);
00051
00052 void applyForce(FixedVector &force);
00053
00054
00055 virtual void simulate(fixed timepassed, bool &remove);
00056
00057 protected:
00058 PhysicsParticleActionObject physicsObject_;
00059 bool collision_;
00060 fixed totalActionTime_;
00061
00062 };
00063
00064
00065 class PhysicsParticleReferenced :
00066 public PhysicsParticle
00067 {
00068 public:
00069 PhysicsParticleReferenced();
00070 virtual ~PhysicsParticleReferenced();
00071
00072 virtual bool getReferenced() { return true; }
00073 };
00074
00075 #endif // !defined(AFX_PhysicsParticle_H__53A44445_C8C9_4108_B5E1_744C0AF7A1D5__INCLUDED_)