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