BVB Source Codes

CRYENGINE Show GameObjectSystem_FactoryRegistration.cpp Source code

Return Download CRYENGINE: download GameObjectSystem_FactoryRegistration.cpp Source code - Download CRYENGINE Source code - Type:.cpp
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #include "StdAfx.h"
  4. #include "GameObjectSystem.h"
  5.  
  6. #include "WorldQuery.h"
  7. #include "Interactor.h"
  8. #include "GameVolumes/GameVolume_Water.h"
  9. #include "GameObjects/MannequinObject.h"
  10.  
  11. #include <CryGame/IGameVolumes.h>
  12. #include <CryGame/IGameFramework.h>
  13.  
  14. // entityClassString can be different from extensionClassName to allow mapping entity classes to differently
  15. // named C++ Classes
  16. #define REGISTER_GAME_OBJECT_EXTENSION(framework, entityClassString, extensionClassName, script)  \
  17.   {                                                                                               \
  18.     IEntityClassRegistry::SEntityClassDesc clsDesc;                                               \
  19.     clsDesc.sName = entityClassString;                                                            \
  20.     clsDesc.sScriptFile = script;                                                                 \
  21.     struct C ## extensionClassName ## Creator : public IGameObjectExtensionCreatorBase            \
  22.     {                                                                                             \
  23.       IGameObjectExtension* Create(IEntity *pEntity)                                            \
  24.       {                                                                                           \
  25.         return pEntity->CreateComponentClass<C ## extensionClassName>();                          \
  26.       }                                                                                           \
  27.       void GetGameObjectExtensionRMIData(void** ppRMI, size_t * nCount)                           \
  28.       {                                                                                           \
  29.         C ## extensionClassName::GetGameObjectExtensionRMIData(ppRMI, nCount);                    \
  30.       }                                                                                           \
  31.     };                                                                                            \
  32.     static C ## extensionClassName ## Creator _creator;                                           \
  33.     framework->GetIGameObjectSystem()->RegisterExtension(entityClassString, &_creator, &clsDesc); \
  34.   }                                                                                               \
  35.  
  36. #define HIDE_FROM_EDITOR(className)                                                           \
  37.   { IEntityClass* pItemClass = gEnv->pEntitySystem->GetClassRegistry()->FindClass(className); \
  38.     pItemClass->SetFlags(pItemClass->GetFlags() | ECLF_INVISIBLE); }
  39.  
  40. #define REGISTER_EDITOR_VOLUME_CLASS(frameWork, className)                                         \
  41.   {                                                                                                \
  42.     IGameVolumes* pGameVolumes = frameWork->GetIGameVolumesManager();                              \
  43.     IGameVolumesEdit* pGameVolumesEdit = pGameVolumes ? pGameVolumes->GetEditorInterface() : NULL; \
  44.     if (pGameVolumesEdit != NULL)                                                                  \
  45.     {                                                                                              \
  46.       pGameVolumesEdit->RegisterEntityClass(className);                                            \
  47.     }                                                                                              \
  48.   }
  49.  
  50. void CGameObjectSystem::RegisterFactories(IGameFramework* pFrameWork)
  51. {
  52.         REGISTER_FACTORY(pFrameWork, "WorldQuery", CWorldQuery, false);
  53.         REGISTER_FACTORY(pFrameWork, "Interactor", CInteractor, false);
  54.  
  55.         REGISTER_GAME_OBJECT_EXTENSION(pFrameWork, "WaterVolume", GameVolume_Water, "Scripts/Entities/Environment/WaterVolume.lua");
  56.         RegisterEntityWithDefaultComponent<CMannequinObject>("MannequinEntity", "Animation", "User.bmp");
  57.  
  58.         HIDE_FROM_EDITOR("WaterVolume");
  59.         REGISTER_EDITOR_VOLUME_CLASS(pFrameWork, "WaterVolume");
  60. }
  61.  
downloadGameObjectSystem_FactoryRegistration.cpp Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top