00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CEL_PF_ZONE__
00021 #define __CEL_PF_ZONE__
00022
00023 #include "cstypes.h"
00024 #include "csgeom/vector3.h"
00025 #include "csutil/scf.h"
00026
00027 struct iSector;
00028 struct iCollection;
00029 struct iPcCamera;
00030 struct iPcMesh;
00031 struct iCelEntity;
00032 struct iStringArray;
00033 struct iString;
00034 struct iDocumentNode;
00035
00039 struct iCelMapFile : public virtual iBase
00040 {
00041 SCF_INTERFACE (iCelMapFile, 0, 2, 0);
00042
00046 virtual void SetName (const char* name) = 0;
00047
00053 virtual void SetPath (const char* path) = 0;
00054
00059 virtual void SetFile (const char* file) = 0;
00060
00065 virtual const char* GetName () const = 0;
00066
00071 virtual const char* GetPath () const = 0;
00072
00077 virtual const char* GetFile () const = 0;
00078
00085 virtual void SetSectorName (const char* name) = 0;
00086
00091 virtual const char* GetSectorName () const = 0;
00092 };
00093
00098 struct iCelRegion : public virtual iBase
00099 {
00100 SCF_INTERFACE (iCelRegion, 0, 3, 0);
00101
00103 virtual const char* GetName () const = 0;
00104
00111 virtual const char* GetCsCollectionName () const = 0;
00112
00120 virtual void SetCachePath (const char* path) = 0;
00121
00126 virtual const char* GetCachePath () const = 0;
00127
00132 virtual iCelMapFile* CreateMapFile () = 0;
00133
00137 virtual size_t GetMapFileCount () const = 0;
00138
00142 virtual iCelMapFile* GetMapFile (int idx) const = 0;
00143
00147 virtual iCelMapFile* FindMapFile (const char* name) const = 0;
00148
00153 virtual bool RemoveMapFile (iCelMapFile* mapfile) = 0;
00154
00158 virtual void RemoveAllMapFiles () = 0;
00159
00164 virtual void AssociateEntity (iCelEntity* entity) = 0;
00165
00169 virtual void DissociateEntity (iCelEntity* entity) = 0;
00170
00174 virtual bool ContainsEntity (iCelEntity* entity) = 0;
00175
00179 virtual iCollection* GetCollection () = 0;
00180 };
00181
00186 struct iCelZone : public virtual iBase
00187 {
00188 SCF_INTERFACE (iCelZone, 0, 1, 0);
00189
00191 virtual const char* GetName () const = 0;
00192
00196 virtual void LinkRegion (iCelRegion* region) = 0;
00197
00201 virtual size_t GetRegionCount () const = 0;
00202
00206 virtual iCelRegion* GetRegion (size_t idx) const = 0;
00207
00211 virtual iCelRegion* FindRegion (const char* name) const = 0;
00212
00217 virtual bool UnlinkRegion (iCelRegion* region) = 0;
00218
00222 virtual void UnlinkAllRegions () = 0;
00223 };
00224
00228
00229 #define CEL_ZONEERROR_OK 0
00230
00232 #define CEL_ZONEERROR_BADREGION 1
00233
00235 #define CEL_ZONEERROR_BADSTART 2
00236
00238 #define CEL_ZONEERROR_LOAD 3
00239
00244
00245 #define CEL_ZONE_NORMAL 0
00246
00248 #define CEL_ZONE_KEEP 1
00249
00251 #define CEL_ZONE_LOADALL 2
00252
00299 struct iPcZoneManager : public virtual iBase
00300 {
00301 SCF_INTERFACE (iPcZoneManager, 0, 1, 3);
00302
00308 virtual void EnableColliderWrappers (bool en) = 0;
00309
00313 virtual bool IsColliderWrappers () const = 0;
00314
00323 virtual void SetLoadingMode (int mode) = 0;
00324
00328 virtual int GetLoadingMode () const = 0;
00329
00336 virtual bool Load (iDocumentNode* node) = 0;
00337
00350 virtual bool Load (const char* path, const char* file) = 0;
00351
00355 virtual iCelZone* CreateZone (const char* name) = 0;
00356
00360 virtual size_t GetZoneCount () const = 0;
00361
00365 virtual iCelZone* GetZone (int idx) const = 0;
00366
00370 virtual iCelZone* FindZone (const char* name) const = 0;
00371
00376 virtual bool RemoveZone (iCelZone* zone) = 0;
00377
00381 virtual void RemoveAllZones () = 0;
00382
00386 virtual iCelRegion* CreateRegion (const char* name) = 0;
00387
00391 virtual size_t GetRegionCount () const = 0;
00392
00396 virtual iCelRegion* GetRegion (int idx) const = 0;
00397
00401 virtual iCelRegion* FindRegion (const char* name) const = 0;
00402
00407 virtual bool RemoveRegion (iCelRegion* region) = 0;
00408
00412 virtual void RemoveAllRegions () = 0;
00413
00417 virtual void FindStartLocations (iStringArray* regionnames,
00418 iStringArray* startnames) = 0;
00419
00425 virtual void GetLastStartLocation (iString* regionname,
00426 iString* startname) = 0;
00432 virtual const char *GetLastStartRegionName () = 0;
00433
00438 virtual const char *GetLastStartName () = 0;
00439
00456 virtual int PointCamera (const char* entity, const char* regionname,
00457 const char* startname = 0) = 0;
00458
00475 virtual int PointMesh (const char* entity, const char* regionname,
00476 const char* startname = 0) = 0;
00477
00484 virtual bool ActivateRegion (iCelRegion* region,
00485 bool allow_entity_addon = true) = 0;
00486
00490 virtual iCelRegion* FindRegionContaining (iCelEntity* ent) = 0;
00491 };
00492
00493 #endif // __CEL_PF_ZONE__
00494