00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CEL_PF_MOVE__
00021 #define __CEL_PF_MOVE__
00022
00023 #include "cstypes.h"
00024 #include "csutil/scf.h"
00025
00026 struct iSector;
00027 struct iPcMesh;
00028 struct iPcMovableConstraint;
00029 class csVector3;
00030
00035 #define CEL_PCMOVABLE_PROPERTY_POSITION 1
00036
00037 #define CEL_MOVE_FAIL 0
00038 #define CEL_MOVE_SUCCEED 1
00039 #define CEL_MOVE_PARTIAL 2
00040
00044 struct iPcMovable : public virtual iBase
00045 {
00046 SCF_INTERFACE (iPcMovable, 0, 0, 1);
00047
00052 virtual void SetMesh (iPcMesh* mesh) = 0;
00053
00057 virtual iPcMesh* GetMesh () = 0;
00058
00069 virtual int Move (iSector* sector, const csVector3& pos) = 0;
00070
00081 virtual int Move (const csVector3& relpos) = 0;
00082
00086 virtual void AddConstraint (iPcMovableConstraint* constraint) = 0;
00087
00091 virtual void RemoveConstraint (iPcMovableConstraint* constraint) = 0;
00092
00096 virtual void RemoveAllConstraints () = 0;
00097 };
00098
00102 struct iPcMovableConstraint : public virtual iBase
00103 {
00104 SCF_INTERFACE (iPcMovableConstraint, 0, 0, 1);
00105
00119 virtual int CheckMove (iSector* sector, const csVector3& from,
00120 const csVector3& to, csVector3& pos) = 0;
00121 };
00122
00123 #endif // __CEL_PF_MOVE__
00124