CEL

Public API Reference

propclass/zone.h
00001 /*
00002     Crystal Space Entity Layer
00003     Copyright (C) 2004 by Jorrit Tyberghein
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014 
00015     You should have received a copy of the GNU Library General Public
00016     License along with this library; if not, write to the Free
00017     Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
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 

Generated for CEL: Crystal Entity Layer 2.0 by doxygen 1.7.6.1