00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __IENGINE_COLLIDER_H__
00021 #define __IENGINE_COLLIDER_H__
00022
00023 #include "csutil/scf.h"
00024 #include "csgeom/vector3.h"
00025
00026 struct iPolygonMesh;
00027 class csTransform;
00028
00032 struct csCollisionPair
00033 {
00034 csVector3 a1, b1, c1;
00035 csVector3 a2, b2, c2;
00036 };
00037
00038 SCF_VERSION (iCollider, 0, 2, 0);
00039
00043 struct iCollider : public iBase
00044 {
00045 };
00046
00047 SCF_VERSION (iCollideSystem, 0, 0, 1);
00048
00055 struct iCollideSystem : public iBase
00056 {
00058 virtual iCollider* CreateCollider (iPolygonMesh* mesh) = 0;
00059
00069 virtual bool Collide (iCollider* collider1, const csTransform* trans1,
00070 iCollider* collider2, const csTransform* trans2) = 0;
00071
00077 virtual csCollisionPair* GetCollisionPairs () = 0;
00078
00082 virtual int GetCollisionPairCount () = 0;
00083
00087 virtual void ResetCollisionPairs () = 0;
00088
00094 virtual void SetOneHitOnly (bool o) = 0;
00095
00102 virtual bool GetOneHitOnly () = 0;
00103 };
00104
00105 #endif // __IENGINE_COLLIDER_H__
00106