## Public API Reference

- Main Page
- Classes
- Files

# 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 iPcCamera;
    00029 struct iPcMesh;
    00030 struct iCelEntity;
    00031 struct iStringArray;
    00032 struct iString;
    00033 struct iDocumentNode;
    00034
    00035 SCF_VERSION (iCelMapFile, 0, 1, 0);
    00036
    00040 struct iCelMapFile : public iBase
    00041 {
    00047   virtual void SetPath (const char* path) = 0;
    00048
    00053   virtual void SetFile (const char* file) = 0;
    00054
    00059   virtual const char* GetPath () const = 0;
    00060
    00065   virtual const char* GetFile () const = 0;
    00066
    00073   virtual void SetSectorName (const char* name) = 0;
    00074
    00079   virtual const char* GetSectorName () const = 0;
    00080 };
    00081
    00082 SCF_VERSION (iCelRegion, 0, 1, 1);
    00083
    00088 struct iCelRegion : public iBase
    00089 {
    00091   virtual const char* GetName () const = 0;
    00092
    00100   virtual void SetCachePath (const char* path) = 0;
    00101
    00106   virtual const char* GetCachePath () const = 0;
    00107
    00112   virtual iCelMapFile* CreateMapFile () = 0;
    00113
    00117   virtual size_t GetMapFileCount () const = 0;
    00118
    00122   virtual iCelMapFile* GetMapFile (int idx) const = 0;
    00123
    00128   virtual bool RemoveMapFile (iCelMapFile* mapfile) = 0;
    00129
    00133   virtual void RemoveAllMapFiles () = 0;
    00134
    00139   virtual void AssociateEntity (iCelEntity* entity) = 0;
    00140
    00144   virtual void DissociateEntity (iCelEntity* entity) = 0;
    00145 };
    00146
    00147 SCF_VERSION (iCelZone, 0, 1, 0);
    00148
    00153 struct iCelZone : public iBase
    00154 {
    00156   virtual const char* GetName () const = 0;
    00157
    00161   virtual void LinkRegion (iCelRegion* region) = 0;
    00162
    00166   virtual size_t GetRegionCount () const = 0;
    00167
    00171   virtual iCelRegion* GetRegion (size_t idx) const = 0;
    00172
    00176   virtual iCelRegion* FindRegion (const char* name) const = 0;
    00177
    00182   virtual bool UnlinkRegion (iCelRegion* region) = 0;
    00183
    00187   virtual void UnlinkAllRegions () = 0;
    00188 };
    00189
    00193
    00194 #define CEL_ZONEERROR_OK 0
    00195
    00197 #define CEL_ZONEERROR_BADREGION 1
    00198
    00200 #define CEL_ZONEERROR_BADSTART 2
    00201
    00203 #define CEL_ZONEERROR_LOAD 3
    00204
    00209
    00210 #define CEL_ZONE_NORMAL 0
    00211
    00213 #define CEL_ZONE_KEEP 1
    00214
    00216 #define CEL_ZONE_LOADALL 2
    00217
    00220 SCF_VERSION (iPcZoneManager, 0, 1, 2);
    00221
    00264 struct iPcZoneManager : public iBase
    00265 {
    00271   virtual void EnableColliderWrappers (bool en) = 0;
    00272
    00276   virtual bool IsColliderWrappers () const = 0;
    00277
    00286   virtual void SetLoadingMode (int mode) = 0;
    00287
    00291   virtual int GetLoadingMode () const = 0;
    00292
    00299   virtual bool Load (iDocumentNode* node) = 0;
    00300
    00313   virtual bool Load (const char* path, const char* file) = 0;
    00314
    00318   virtual iCelZone* CreateZone (const char* name) = 0;
    00319
    00323   virtual size_t GetZoneCount () const = 0;
    00324
    00328   virtual iCelZone* GetZone (int idx) const = 0;
    00329
    00333   virtual iCelZone* FindZone (const char* name) const = 0;
    00334
    00339   virtual bool RemoveZone (iCelZone* zone) = 0;
    00340
    00344   virtual void RemoveAllZones () = 0;
    00345
    00349   virtual iCelRegion* CreateRegion (const char* name) = 0;
    00350
    00354   virtual size_t GetRegionCount () const = 0;
    00355
    00359   virtual iCelRegion* GetRegion (int idx) const = 0;
    00360
    00364   virtual iCelRegion* FindRegion (const char* name) const = 0;
    00365
    00370   virtual bool RemoveRegion (iCelRegion* region) = 0;
    00371
    00375   virtual void RemoveAllRegions () = 0;
    00376
    00380   virtual void FindStartLocations (iStringArray* regionnames,
    00381         iStringArray* startnames) = 0;
    00382
    00388   virtual void GetLastStartLocation (iString* regionname,
    00389         iString* startname) = 0;
    00395   virtual const char *GetLastStartRegionName () = 0;
    00396
    00401   virtual const char *GetLastStartName () = 0;
    00402
    00420   virtual int PointCamera (const char* entity, const char* regionname,
    00421         const char* startname = 0) = 0;
    00422
    00440   virtual int PointMesh (const char* entity, const char* regionname,
    00441         const char* startname = 0) = 0;
    00442
    00449   virtual bool ActivateRegion (iCelRegion* region,
    00450       bool allow_entity_addon = true) = 0;
    00451 };
    00452
    00453 #endif // __CEL_PF_ZONE__
    00454