CEL

Public API Reference

Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members

mechsys.h

00001 #ifndef __CEL_PF_MECHANICS_SYSTEM__
00002 #define __CEL_PF_MECHANICS_SYSTEM__
00003 
00004 #include "cstypes.h"
00005 #include "csutil/scf.h"
00006 
00007 #include "propclass/mechcommon.h"
00008 
00009 class csVector3;
00010 class csBox3;
00011 class csOrthoTransform;
00012 class csPlane3;
00013 struct iDynamicSystem;
00014 struct iRigidBody;
00015 struct iSector;
00016 struct iPcMesh;
00017 struct iPcMechanicsObject;
00018 struct iJoint;
00019 
00023 struct iPcMechanicsSystem : public virtual iBase
00024 {
00025   SCF_INTERFACE (iPcMechanicsSystem, 0, 0, 1);
00026 
00032   virtual void SetDynamicSystem (iDynamicSystem* dynsys) = 0;
00033 
00039   virtual void SetDynamicSystem (const char *dynsysname) = 0;
00040 
00041 
00045   virtual iDynamicSystem* GetDynamicSystem () = 0;
00046 
00051   virtual void SetStepTime (float delta) = 0;
00052 
00056   virtual float GetStepTime () const = 0;
00057 
00062   virtual void SetGravity (const csVector3& grav) = 0;
00063 
00067   virtual const csVector3 GetGravity () = 0;
00068 
00081   virtual void AddForceDuration (iPcMechanicsObject* pcobject,
00082         const csVector3& force, bool relative, const csVector3& position,
00083         float seconds) = 0;
00084 
00095   virtual void AddForceFrame (iPcMechanicsObject* pcobject,
00096         const csVector3& force, bool relative, const csVector3& position) = 0;
00097 
00110   virtual void AddForceTagged (iPcMechanicsObject* pcobject,
00111         const csVector3& force, bool relative, const csVector3& position,
00112         uint32 forceid) = 0;
00113 
00121   virtual void RemoveForceTagged (iPcMechanicsObject* pcobject,
00122         uint32 forceid) = 0;
00123 
00130   virtual void ClearForces (iPcMechanicsObject* pcobject) = 0;
00131 
00135   virtual void ClearAllForces () = 0;
00136 
00140   virtual csPtr<iRigidBody> CreateBody () = 0;
00141 
00146   virtual void RemoveBody (iRigidBody* body) = 0;
00147 
00154   virtual void AddBodyToGroup (iRigidBody* body, const char* group) = 0;
00155 
00161   virtual void RemoveBodyFromGroup (iRigidBody* body, const char* group) = 0;
00162 
00166   virtual iJoint* CreateJoint (iRigidBody* body1, iRigidBody* body2) = 0;
00167 
00171   virtual void RemoveJoint (iJoint* joint) = 0;
00172 
00177   virtual void DisableStepFast () = 0;
00182   virtual void EnableStepFast () = 0;
00186   virtual void EnableQuickStep () = 0;
00187 };
00188 
00198 struct iPcMechanicsObject : public virtual iBase
00199 {
00200   SCF_INTERFACE (iPcMechanicsObject, 0, 0, 1);
00201 
00208   virtual void SetMesh (iPcMesh* mesh) = 0;
00209 
00213   virtual iPcMesh* GetMesh () = 0;
00214 
00221   virtual void SetMechanicsSystem (iPcMechanicsSystem* mechsys) = 0;
00222 
00226   virtual iPcMechanicsSystem* GetMechanicsSystem () = 0;
00227 
00231   virtual iRigidBody* GetBody () = 0;
00232 
00233 
00235   //Object properties.
00236 
00242   virtual void SetFriction (float friction) = 0;
00243 
00249   virtual void SetMass (float mass) = 0;
00250 
00256   virtual void SetElasticity (float elasticity) = 0;
00257 
00263   virtual void SetDensity (float density) = 0;
00264 
00270   virtual void SetSoftness (float softness) = 0;
00271 
00277   virtual void SetLift (const csVector3& lift) = 0;
00278 
00284   virtual void SetDrag (float drag) = 0;
00285 
00290   virtual float GetFriction () = 0;
00291 
00296   virtual float GetMass () = 0;
00297 
00302   virtual float GetElasticity () = 0;
00303 
00308   virtual float GetDensity () = 0;
00309 
00314   virtual float GetSoftness () = 0;
00315 
00320   virtual const csVector3& GetLift () = 0;
00321 
00326   virtual float GetDrag () = 0;
00327 
00328 
00330   //Initial velocities
00331 
00336   virtual void SetLinearVelocity (const csVector3& vel) = 0;
00337 
00342   virtual void SetAngularVelocity (const csVector3& vel) = 0;
00343 
00344 
00346   //Reading velocities
00347 
00351   virtual const csVector3 GetLinearVelocity () = 0;
00352 
00356   virtual const csVector3 GetAngularVelocity () = 0;
00357 
00358 
00360   //Static objects
00361 
00367   virtual void MakeStatic (bool stat) = 0;
00368   
00372   virtual bool IsStatic () const = 0;
00373 
00374 
00376   //Colliders
00377 
00384   virtual void AttachColliderSphere (float radius, const csVector3& offset) = 0;
00385 
00392   virtual void AttachColliderCylinder (float length, float radius,
00393         const csOrthoTransform& trans) = 0;
00394 
00400   virtual void AttachColliderBox (const csVector3& size,
00401         const csOrthoTransform& trans) = 0;
00402 
00407   virtual void AttachColliderPlane (const csPlane3& plane) = 0;
00408 
00412   virtual void AttachColliderMesh () = 0;
00413 
00414 
00416   //Forces
00417 
00425   virtual void AddForceOnce (const csVector3& force, bool relative,
00426         const csVector3& position) = 0;
00427 
00436   virtual void AddForceDuration (const csVector3& force, bool relative,
00437         const csVector3& position, float seconds) = 0;
00438 
00446   virtual void AddForceFrame (const csVector3& force, bool relative,
00447         const csVector3& position) = 0;
00448 
00457   virtual void AddForceTagged (const csVector3& force, bool relative,
00458         const csVector3& position, uint32& forceid) = 0;
00459 
00464   virtual void RemoveForceTagged (uint32 forceid) = 0;
00465 
00469   virtual void ClearForces () = 0;
00470 
00471 
00473   //Groups and Joints
00474 
00480   virtual void AddToGroup (const char* group) = 0;
00481 
00486   virtual void RemoveFromGroup (const char* group) = 0;
00487 
00491   virtual iJoint* CreateJoint (iPcMechanicsObject* other) = 0;
00492 };
00493 
00494 #endif // __CEL_PF_MECHANICS_SYSTEM__
00495 

Generated for CEL: Crystal Entity Layer by doxygen 1.4.4