BVB Source Codes

CRYENGINE Show GameObjectSystem.h Source code

Return Download CRYENGINE: download GameObjectSystem.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef __GAMEOBJECTSYSTEM_H__
  4. #define __GAMEOBJECTSYSTEM_H__
  5.  
  6. #pragma once
  7.  
  8. // FIXME: Cell SDK GCC bug workaround.
  9. #ifndef __IGAMEOBJECTSYSTEM_H__
  10.         #include "IGameObjectSystem.h"
  11. #endif
  12.  
  13. #include "GameObjectDispatch.h"
  14. #include <vector>
  15. #include <map>
  16.  
  17. struct SEntitySchedulingProfiles
  18. {
  19.         uint32 normal;
  20.         uint32 owned;
  21.  
  22.         void   GetMemoryUsage(ICrySizer* pSizer) const { /*nothing*/ }
  23. };
  24.  
  25. class CGameObjectSystem : public IGameObjectSystem
  26. {
  27. public:
  28.         bool                                               Init();
  29.  
  30.         IGameObjectSystem::ExtensionID                     GetID(const char* name) override;
  31.         const char*                                        GetName(IGameObjectSystem::ExtensionID id) override;
  32.         uint32                                             GetExtensionSerializationPriority(IGameObjectSystem::ExtensionID id) override;
  33.         IGameObjectExtension*                            Instantiate(IGameObjectSystem::ExtensionID id, IGameObject* pObject, TSerialize* pSpawnSerializer) override;
  34.         virtual void                                       RegisterExtension(const char* szName, IGameObjectExtensionCreatorBase* pCreator, IEntityClassRegistry::SEntityClassDesc* pClsDesc) override;
  35.         virtual void                                       RegisterSchedulingProfile(const char* szEntityClassName, const char* szNormalPolicy, const char* szOwnedPolicy) override;
  36.         virtual void                                       DefineProtocol(bool server, IProtocolBuilder* pBuilder) override;
  37.         virtual void                                       BroadcastEvent(const SGameObjectEvent& evt) override;
  38.  
  39.         virtual void                                       RegisterEvent(uint32 id, const char* name) override;
  40.         virtual uint32                                     GetEventID(const char* name) override;
  41.         virtual const char*                                GetEventName(uint32 id) override;
  42.  
  43.         virtual IGameObject*                               CreateGameObjectForEntity(EntityId entityId) override;
  44.         virtual IEntityComponent*                          CreateGameObjectEntityProxy(IEntity& entity, IGameObject** pGameObject = NULL) override;
  45.  
  46.         virtual void                                       PostUpdate(float frameTime) override;
  47.         virtual void                                       SetPostUpdate(IGameObject* pGameObject, bool enable) override;
  48.  
  49.         virtual void                                       Reset() override;
  50.  
  51.         const SEntitySchedulingProfiles*                   GetEntitySchedulerProfiles(IEntity* pEnt);
  52.  
  53.         void                                               RegisterFactories(IGameFramework* pFW);
  54.  
  55.         IEntity*                                           CreatePlayerProximityTrigger();
  56.         ILINE IEntityClass*                                GetPlayerProximityTriggerClass() { return m_pClassPlayerProximityTrigger; }
  57.         ILINE std::vector<IGameObjectSystem::ExtensionID>* GetActivatedExtensionsTop()      { return &m_activatedExtensions_top; }
  58.  
  59.         void                                               GetMemoryUsage(ICrySizer* s) const;
  60.  
  61.         virtual void                                       AddSink(IGameObjectSystemSink* pSink) override;
  62.         virtual void                                       RemoveSink(IGameObjectSystemSink* pSink) override;
  63. private:
  64.         void                                               LoadSerializationOrderFile();
  65.         TSerialize*                                        GetSpawnSerializerForEntity(const EntityId entityId) const;
  66.  
  67.         std::map<string, ExtensionID> m_nameToID;
  68.  
  69.         struct SExtensionInfo
  70.         {
  71.                 string                           name;
  72.                 uint32                           serializationPriority; // lower values is higher priority
  73.                 IGameObjectExtensionCreatorBase* pFactory;
  74.  
  75.                 void                             GetMemoryUsage(ICrySizer* pSizer) const
  76.                 {
  77.                         pSizer->AddObject(name);
  78.                 }
  79.         };
  80.         std::vector<SExtensionInfo> m_extensionInfo;
  81.  
  82.         static IEntityComponent* CreateGameObjectWithPreactivatedExtension(
  83.           IEntity* pEntity, SEntitySpawnParams& params, void* pUserData);
  84.  
  85.         CGameObjectDispatch       m_dispatch;
  86.  
  87.         std::vector<IGameObject*> m_postUpdateObjects;
  88.         IEntityClass*             m_pClassPlayerProximityTrigger;
  89.  
  90.         typedef std::map<string, SEntitySchedulingProfiles> TSchedulingProfiles;
  91.         TSchedulingProfiles       m_schedulingParams;
  92.         SEntitySchedulingProfiles m_defaultProfiles;
  93.  
  94.         // event ID management
  95.         std::map<string, uint32> m_eventNameToID;
  96.         std::map<uint32, string> m_eventIDToName;
  97.         //
  98.         typedef std::list<IGameObjectSystemSink*> SinkList;
  99.         SinkList                                    m_lstSinks; // registered sinks get callbacks
  100.  
  101.         std::vector<IGameObject*>                   m_tempObjects;
  102.  
  103.         std::vector<IGameObjectSystem::ExtensionID> m_activatedExtensions_top;
  104.         std::vector<string>                         m_serializationOrderList; // defines serialization order for extensions
  105. };
  106.  
  107. #endif
  108.  
downloadGameObjectSystem.h 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