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 00048 #define CEL_PROPCLASS_END (void*)0 00049 #define CEL_PARAM_END (void*)0 00050 00052 typedef csHash<csStrKey, csStrKey> celEntityTemplateParams; 00053 00054 struct iCelEntityTracker; 00055 00060 struct iCelNewEntityCallback : public virtual iBase 00061 { 00062 SCF_INTERFACE (iCelNewEntityCallback, 0, 0, 2); 00063 00065 virtual void NewEntity (iCelEntity* entity) = 0; 00066 }; 00067 00072 struct iCelEntityRemoveCallback : public virtual iBase 00073 { 00074 SCF_INTERFACE (iCelEntityRemoveCallback, 0, 0, 2); 00075 00077 virtual void RemoveEntity (iCelEntity* entity) = 0; 00078 }; 00079 00080 00085 struct iCelTimerListener : public virtual iBase 00086 { 00087 SCF_INTERFACE (iCelTimerListener, 0, 0, 1); 00088 00093 virtual void TickEveryFrame () = 0; 00094 00099 virtual void TickOnce () = 0; 00100 }; 00101 00102 SCF_VERSION (iCelPlLayer, 0, 3, 2); 00103 00107 struct iCelPlLayer : public iBase 00108 { 00114 virtual csPtr<iCelEntity> CreateEntity () = 0; 00115 00120 virtual csPtr<iCelEntity> CreateEntityInScope (int scope) = 0; 00121 00127 virtual csPtr<iCelEntity> CreateEntity (uint id) = 0; 00128 00144 virtual csPtr<iCelEntity> CreateEntity (const char* entname, 00145 iCelBlLayer* bl, const char* bhname, ...) = 0; 00146 00150 virtual void RemoveEntity (iCelEntity* entity) = 0; 00151 00155 virtual void RemoveEntities () = 0; 00156 00161 virtual iCelEntityTemplate* CreateEntityTemplate (const char* factname) = 0; 00162 00166 virtual void RemoveEntityTemplate (iCelEntityTemplate* entfact) = 0; 00167 00171 virtual void RemoveEntityTemplates () = 0; 00172 00176 virtual iCelEntityTemplate* FindEntityTemplate (const char* factname) = 0; 00177 00181 virtual size_t GetEntityTemplateCount () const = 0; 00182 00186 virtual iCelEntityTemplate* GetEntityTemplate (size_t idx) const = 0; 00187 00195 virtual iCelEntity* CreateEntity (iCelEntityTemplate* factory, 00196 const char* name, const celEntityTemplateParams& params) = 0; 00197 00207 virtual iCelEntity* CreateEntity (iCelEntityTemplate* factory, 00208 const char* name, ...) = 0; 00209 00216 virtual csPtr<iCelDataBuffer> CreateDataBuffer (long serialnr) = 0; 00217 00223 virtual void AttachEntity (iObject* object, iCelEntity* entity) = 0; 00224 00228 virtual void UnattachEntity (iObject* object, iCelEntity* entity) = 0; 00229 00233 virtual iCelEntity* GetEntity (uint id) = 0; 00234 00238 virtual size_t GetEntityCount () const = 0; 00239 00243 virtual iCelEntity* GetEntityByIndex (size_t idx) const = 0; 00244 00250 virtual iCelEntity* FindEntity (const char* name) = 0; 00251 00256 virtual iCelBehaviour* GetBehaviour (uint id) = 0; 00257 00261 virtual iCelEntity* FindAttachedEntity (iObject* object) = 0; 00262 00268 virtual csPtr<iCelEntityList> FindNearbyEntities (iSector* sector, 00269 const csVector3& pos, float radius, bool do_invisible = false) = 0; 00270 00276 virtual csPtr<iCelEntityList> FindNearbyEntities (iSector* sector, 00277 const csBox3& box, bool do_invisible = false) = 0; 00278 00284 virtual csPtr<iCelEntityList> FindNearbyEntities (iSector* sector, 00285 const csVector3& start, const csVector3& end, 00286 bool do_invisible = false) = 0; 00287 00293 virtual iCelEntity* GetHitEntity (iCamera* camera, int x, int y) = 0; 00294 00298 virtual csPtr<iCelEntityList> CreateEmptyEntityList () = 0; 00299 00304 virtual iCelEntityTracker* CreateEntityTracker (const char* name) = 0; 00305 00309 virtual iCelEntityTracker* FindEntityTracker (const char* name) = 0; 00310 00314 virtual void RemoveEntityTracker (iCelEntityTracker* tracker) = 0; 00315 00323 virtual void SetEntityAddonAllowed (bool allow) = 0; 00324 00328 virtual bool IsEntityAddonAllowed () const = 0; 00329 00330 //------------------------------------------------------------------------- 00331 00337 virtual bool LoadPropertyClassFactory (const char* plugin_id) = 0; 00338 00345 virtual void RegisterPropertyClassFactory (iCelPropertyClassFactory* pf) = 0; 00346 00350 virtual void UnregisterPropertyClassFactory ( 00351 iCelPropertyClassFactory* pf) = 0; 00352 00356 virtual size_t GetPropertyClassFactoryCount () const = 0; 00357 00361 virtual iCelPropertyClassFactory* GetPropertyClassFactory (size_t idx) 00362 const = 0; 00363 00367 virtual iCelPropertyClassFactory* FindPropertyClassFactory ( 00368 const char* name) const = 0; 00369 00375 virtual iCelPropertyClass* CreatePropertyClass 00376 (iCelEntity* entity, const char* propname) = 0; 00377 00383 virtual iCelPropertyClass* CreateTaggedPropertyClass 00384 (iCelEntity* entity, const char* propname, const char* tagname) = 0; 00385 00386 //------------------------------------------------------------------------- 00387 00391 virtual void RegisterBehaviourLayer (iCelBlLayer* bl) = 0; 00392 00396 virtual void UnregisterBehaviourLayer (iCelBlLayer* bl) = 0; 00397 00401 virtual size_t GetBehaviourLayerCount () const = 0; 00402 00406 virtual iCelBlLayer* GetBehaviourLayer (size_t idx) const = 0; 00407 00411 virtual iCelBlLayer* FindBehaviourLayer (const char* name) const = 0; 00412 00413 //------------------------------------------------------------------------- 00414 00420 virtual void Cache (iBase* object) = 0; 00421 00425 virtual void Uncache (iBase* object) = 0; 00426 00432 virtual void CleanCache () = 0; 00433 00434 //------------------------------------------------------------------------- 00435 00446 virtual csStringID FetchStringID (const char* str) = 0; 00447 00452 virtual const char* FetchString (csStringID id) = 0; 00453 00458 virtual void AddEntityRemoveCallback (iCelEntityRemoveCallback* clback) = 0; 00459 00463 virtual void RemoveEntityRemoveCallback ( 00464 iCelEntityRemoveCallback* clback) = 0; 00465 00470 virtual void AddNewEntityCallback (iCelNewEntityCallback* clback) = 0; 00471 00475 virtual void RemoveNewEntityCallback (iCelNewEntityCallback* clback) = 0; 00476 00477 //------------------------------------------------------------------------- 00478 00486 virtual void CallbackEveryFrame (iCelTimerListener* listener, int where) = 0; 00487 00496 virtual void CallbackOnce (iCelTimerListener* listener, csTicks delta, 00497 int where) = 0; 00498 00502 virtual void RemoveCallbackEveryFrame (iCelTimerListener* listener, 00503 int where) = 0; 00504 00508 virtual void RemoveCallbackOnce (iCelTimerListener* listener, int where) = 0; 00509 00516 virtual int AddScope (csString version, int size) = 0; 00517 }; 00518 00519 SCF_VERSION (iCelEntityTracker, 0, 0, 1); 00520 00526 struct iCelEntityTracker : public iBase 00527 { 00531 virtual const char* GetName () const = 0; 00532 00538 virtual bool AddEntity (iCelEntity* entity) = 0; 00539 00543 virtual void RemoveEntity (iCelEntity* entity) = 0; 00544 00548 virtual void RemoveEntities () = 0; 00549 00554 virtual csPtr<iCelEntityList> FindNearbyEntities (iSector* sector, 00555 const csVector3& pos, float radius) = 0; 00556 }; 00557 00558 #endif // __CEL_PL_PL__ 00559
Generated for CEL: Crystal Entity Layer by doxygen 1.4.6