physicallayer/pl.h
00001 /* 00002 Crystal Space Entity Layer 00003 Copyright (C) 2001-2005 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_PL_PL__ 00021 #define __CEL_PL_PL__ 00022 00023 #include "cstypes.h" 00024 #include "csutil/scf.h" 00025 #include "csutil/strset.h" 00026 #include "csutil/ref.h" 00027 00028 struct iObject; 00029 struct iCelEntity; 00030 struct iCelEntityList; 00031 struct iCelDataBuffer; 00032 struct iCelMessage; 00033 struct iCelPropertyClass; 00034 struct iCelPropertyClassFactory; 00035 struct iCelBlLayer; 00036 struct iCelBehaviour; 00037 struct iCelEntityTemplate; 00038 struct iSector; 00039 struct iCamera; 00040 class csVector3; 00041 class csBox3; 00042 class csString; 00043 00044 #define CEL_EVENT_PRE 0 00045 #define CEL_EVENT_VIEW 1 00046 #define CEL_EVENT_POST 2 00047 00049 typedef csHash<csStrKey, csStrKey> celEntityTemplateParams; 00050 00051 struct iCelEntityTracker; 00052 00057 struct iCelNewEntityCallback : public virtual iBase 00058 { 00059 SCF_INTERFACE (iCelNewEntityCallback, 0, 0, 2); 00060 00062 virtual void NewEntity (iCelEntity* entity) = 0; 00063 }; 00064 00069 struct iCelEntityRemoveCallback : public virtual iBase 00070 { 00071 SCF_INTERFACE (iCelEntityRemoveCallback, 0, 0, 2); 00072 00074 virtual void RemoveEntity (iCelEntity* entity) = 0; 00075 }; 00076 00077 00082 struct iCelTimerListener : public virtual iBase 00083 { 00084 SCF_INTERFACE (iCelTimerListener, 0, 0, 1); 00085 00090 virtual void TickEveryFrame () = 0; 00091 00096 virtual void TickOnce () = 0; 00097 }; 00098 00099 SCF_VERSION (iCelPlLayer, 0, 3, 2); 00100 00104 struct iCelPlLayer : public iBase 00105 { 00111 virtual csPtr<iCelEntity> CreateEntity () = 0; 00112 00117 virtual csPtr<iCelEntity> CreateEntityInScope (int scope) = 0; 00118 00124 virtual csPtr<iCelEntity> CreateEntity (uint id) = 0; 00125 00141 virtual csPtr<iCelEntity> CreateEntity (const char* entname, 00142 iCelBlLayer* bl, const char* bhname, ...) = 0; 00143 00147 virtual void RemoveEntity (iCelEntity* entity) = 0; 00148 00152 virtual void RemoveEntities () = 0; 00153 00158 virtual iCelEntityTemplate* CreateEntityTemplate (const char* factname) = 0; 00159 00163 virtual void RemoveEntityTemplate (iCelEntityTemplate* entfact) = 0; 00164 00168 virtual void RemoveEntityTemplates () = 0; 00169 00173 virtual iCelEntityTemplate* FindEntityTemplate (const char* factname) = 0; 00174 00182 virtual iCelEntity* CreateEntity (iCelEntityTemplate* factory, 00183 const char* name, const celEntityTemplateParams& params) = 0; 00184 00188 virtual csPtr<iCelMessage> CreateMessage (const char* msg_string, ...) = 0; 00189 00196 virtual csPtr<iCelDataBuffer> CreateDataBuffer (long serialnr) = 0; 00197 00203 virtual void AttachEntity (iObject* object, iCelEntity* entity) = 0; 00204 00208 virtual void UnattachEntity (iObject* object, iCelEntity* entity) = 0; 00209 00213 virtual iCelEntity* GetEntity (uint id) = 0; 00214 00218 virtual size_t GetEntityCount () const = 0; 00219 00223 virtual iCelEntity* GetEntityByIndex (size_t idx) const = 0; 00224 00230 virtual iCelEntity* FindEntity (const char* name) = 0; 00231 00236 virtual iCelBehaviour* GetBehaviour (uint id) = 0; 00237 00241 virtual iCelEntity* FindAttachedEntity (iObject* object) = 0; 00242 00247 virtual csPtr<iCelEntityList> FindNearbyEntities (iSector* sector, 00248 const csVector3& pos, float radius) = 0; 00249 00254 virtual csPtr<iCelEntityList> FindNearbyEntities (iSector* sector, 00255 const csBox3& box) = 0; 00256 00262 virtual iCelEntity* GetHitEntity (iCamera* camera, int x, int y) = 0; 00263 00267 virtual csPtr<iCelEntityList> CreateEmptyEntityList () = 0; 00268 00273 virtual iCelEntityTracker* CreateEntityTracker (const char* name) = 0; 00274 00278 virtual iCelEntityTracker* FindEntityTracker (const char* name) = 0; 00279 00283 virtual void RemoveEntityTracker (iCelEntityTracker* tracker) = 0; 00284 00292 virtual void SetEntityAddonAllowed (bool allow) = 0; 00293 00297 virtual bool IsEntityAddonAllowed () const = 0; 00298 00299 //------------------------------------------------------------------------- 00300 00306 virtual bool LoadPropertyClassFactory (const char* plugin_id) = 0; 00307 00314 virtual void RegisterPropertyClassFactory (iCelPropertyClassFactory* pf) = 0; 00315 00319 virtual void UnregisterPropertyClassFactory ( 00320 iCelPropertyClassFactory* pf) = 0; 00321 00325 virtual size_t GetPropertyClassFactoryCount () const = 0; 00326 00330 virtual iCelPropertyClassFactory* GetPropertyClassFactory (size_t idx) 00331 const = 0; 00332 00336 virtual iCelPropertyClassFactory* FindPropertyClassFactory ( 00337 const char* name) const = 0; 00338 00344 virtual iCelPropertyClass* CreatePropertyClass 00345 (iCelEntity* entity, const char* propname) = 0; 00346 00352 virtual iCelPropertyClass* CreateTaggedPropertyClass 00353 (iCelEntity* entity, const char* propname, const char* tagname) = 0; 00354 00355 //------------------------------------------------------------------------- 00356 00360 virtual void RegisterBehaviourLayer (iCelBlLayer* bl) = 0; 00361 00365 virtual void UnregisterBehaviourLayer (iCelBlLayer* bl) = 0; 00366 00370 virtual size_t GetBehaviourLayerCount () const = 0; 00371 00375 virtual iCelBlLayer* GetBehaviourLayer (size_t idx) const = 0; 00376 00380 virtual iCelBlLayer* FindBehaviourLayer (const char* name) const = 0; 00381 00382 //------------------------------------------------------------------------- 00383 00389 virtual void Cache (iBase* object) = 0; 00390 00394 virtual void Uncache (iBase* object) = 0; 00395 00401 virtual void CleanCache () = 0; 00402 00403 //------------------------------------------------------------------------- 00404 00415 virtual csStringID FetchStringID (const char* str) = 0; 00416 00421 virtual const char* FetchString (csStringID id) = 0; 00422 00427 virtual void AddEntityRemoveCallback (iCelEntityRemoveCallback* clback) = 0; 00428 00432 virtual void RemoveEntityRemoveCallback ( 00433 iCelEntityRemoveCallback* clback) = 0; 00434 00439 virtual void AddNewEntityCallback (iCelNewEntityCallback* clback) = 0; 00440 00444 virtual void RemoveNewEntityCallback (iCelNewEntityCallback* clback) = 0; 00445 00446 //------------------------------------------------------------------------- 00447 00455 virtual void CallbackEveryFrame (iCelTimerListener* listener, int where) = 0; 00456 00465 virtual void CallbackOnce (iCelTimerListener* listener, csTicks delta, 00466 int where) = 0; 00467 00471 virtual void RemoveCallbackEveryFrame (iCelTimerListener* listener, 00472 int where) = 0; 00473 00477 virtual void RemoveCallbackOnce (iCelTimerListener* listener, int where) = 0; 00478 00485 virtual int AddScope (csString version, int size) = 0; 00486 }; 00487 00488 SCF_VERSION (iCelEntityTracker, 0, 0, 1); 00489 00495 struct iCelEntityTracker : public iBase 00496 { 00500 virtual const char* GetName () const = 0; 00501 00507 virtual bool AddEntity (iCelEntity* entity) = 0; 00508 00512 virtual void RemoveEntity (iCelEntity* entity) = 0; 00513 00517 virtual void RemoveEntities () = 0; 00518 00523 virtual csPtr<iCelEntityList> FindNearbyEntities (iSector* sector, 00524 const csVector3& pos, float radius) = 0; 00525 }; 00526 00527 #endif // __CEL_PL_PL__ 00528
Generated for CEL: Crystal Entity Layer by doxygen 1.4.6