BVB Source Codes

CRYENGINE Show ModuleManager.h Source code

Return Download CRYENGINE: download ModuleManager.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #pragma once
  4.  
  5. #include <CryFlowGraph/IFlowGraphModuleManager.h>
  6. #include <CryGame/IGameFramework.h>
  7. #include <CryCore/Containers/CryListenerSet.h>
  8. #include <CryCore/Containers/VectorMap.h>
  9.  
  10. struct SActivationInfo;
  11. class CFlowGraphModule;
  12. class CFlowModuleCallNode;
  13.  
  14. class CFlowGraphModuleManager : public IFlowGraphModuleManager, public ISystemEventListener, public IGameFrameworkListener
  15. {
  16. public:
  17.         CFlowGraphModuleManager();
  18.         virtual ~CFlowGraphModuleManager();
  19.  
  20.         // ISystemEventListener
  21.         virtual void OnSystemEvent(ESystemEvent event, UINT_PTR wparam, UINT_PTR lparam);
  22.         // ~ISystemEventListener
  23.  
  24.         // IGameFrameworkListener
  25.         virtual void OnPostUpdate(float fDeltaTime);
  26.         virtual void OnSaveGame(ISaveGame* pSaveGame)         {}
  27.         virtual void OnLoadGame(ILoadGame* pLoadGame)         {}
  28.         virtual void OnLevelEnd(const char* nextLevel)        {}
  29.         virtual void OnActionEvent(const SActionEvent& event) {}
  30.         // ~IGameFrameworkListener
  31.  
  32.         // IFlowGraphModuleManager
  33.         virtual bool               RegisterListener(IFlowGraphModuleListener* pListener, const char* name);
  34.         virtual void               UnregisterListener(IFlowGraphModuleListener* pListener);
  35.  
  36.         virtual bool               DeleteModuleXML(const char* moduleName);
  37.         virtual bool               RenameModuleXML(const char* moduleName, const char* newName);
  38.  
  39.         virtual bool               SaveModule(const char* moduleName, XmlNodeRef saveTo);
  40.         IFlowGraphModule*          LoadModuleFile(const char* moduleName, const char* fileName, bool bGlobal);
  41.  
  42.         virtual IModuleIteratorPtr CreateModuleIterator();
  43.  
  44.         virtual const char*        GetStartNodeName(const char* moduleName) const;
  45.         virtual const char*        GetReturnNodeName(const char* moduleName) const;
  46.         virtual const char*        GetCallerNodeName(const char* moduleName) const;
  47.         virtual void               ScanForModules();
  48.         virtual const char*        GetModulePath(const char* name);
  49.         virtual bool               CreateModuleNodes(const char* moduleName, TModuleId moduleId);
  50.  
  51.         virtual IFlowGraphModule*  GetModule(IFlowGraphPtr pFlowgraph) const;
  52.         virtual IFlowGraphModule*  GetModule(const char* moduleName) const;
  53.         virtual IFlowGraphModule*  GetModule(TModuleId id) const;
  54.         // ~IFlowGraphModuleManager
  55.  
  56.         void Shutdown();
  57.         void ClearModules();                   // Unload all loaded modules
  58.         void DestroyActiveModuleInstances();
  59.         void RemoveCompletedModuleInstances(); // cleanup at end of update
  60.         void ClearModuleRequestedInstances();
  61.         bool AddModulePathInfo(const char* moduleName, const char* path);
  62.  
  63.         void BroadcastModuleInstanceStarted(IFlowGraphModule* module, TModuleInstanceId instanceID);
  64.         void BroadcastModuleInstanceFinished(IFlowGraphModule* module, TModuleInstanceId instanceID);
  65.  
  66.         DeclareStaticConstIntCVar(CV_fg_debugmodules, 0);
  67.         ICVar* fg_debugmodules_filter;
  68.  
  69. private:
  70.         CFlowGraphModuleManager(CFlowGraphModuleManager const&) : m_listeners(1) {}
  71.         // cppcheck-suppress operatorEqVarError
  72.         CFlowGraphModuleManager& operator=(CFlowGraphModuleManager const&) { return *this; }
  73.  
  74.         void                     RescanModuleNames(bool bGlobal);
  75.         void                     ScanFolder(const string& folderName, bool bGlobal);
  76.  
  77.         CFlowGraphModule*        PreLoadModuleFile(const char* moduleName, const char* fileName, bool bGlobal);
  78.         void                     LoadModuleGraph(const char* moduleName, const char* fileName, IFlowGraphModuleListener::ERootGraphChangeReason rootGraphChangeReason);
  79.  
  80.         // Loaded modules
  81.         typedef VectorMap<TModuleId, CFlowGraphModule*> TModuleMap;
  82.         TModuleMap m_Modules;
  83.         TModuleId  m_nextModuleId;
  84.  
  85.         // Module name-ID map
  86.         typedef std::unordered_map<string, TModuleId, stl::hash_strcmp<string>> TModuleIdMap;
  87.         TModuleIdMap m_ModuleIds;
  88.  
  89.         // Module name-path map
  90.         typedef std::unordered_map<string, string, stl::hash_strcmp<string>> TModulesPathInfo;
  91.         TModulesPathInfo m_ModulesPathInfo;
  92.  
  93.         // Listeners
  94.         CListenerSet<IFlowGraphModuleListener*> m_listeners;
  95.  
  96.         // Module Iterator
  97.         class CModuleIterator : public IFlowGraphModuleIterator
  98.         {
  99.         public:
  100.                 CModuleIterator(CFlowGraphModuleManager* pMM)
  101.                 {
  102.                         m_pModuleManager = pMM;
  103.                         m_cur = m_pModuleManager->m_Modules.begin();
  104.                         m_nRefs = 0;
  105.                 }
  106.  
  107.                 void AddRef()
  108.                 {
  109.                         ++m_nRefs;
  110.                 }
  111.  
  112.                 void Release()
  113.                 {
  114.                         if (--m_nRefs <= 0)
  115.                         {
  116.                                 this->~CModuleIterator();
  117.                                 m_pModuleManager->m_iteratorPool.push_back(this);
  118.                         }
  119.                 }
  120.  
  121.                 IFlowGraphModule* Next();
  122.  
  123.                 size_t            Count()
  124.                 {
  125.                         return m_pModuleManager->m_Modules.size();
  126.                 }
  127.  
  128.                 CFlowGraphModuleManager* m_pModuleManager;
  129.                 TModuleMap::iterator     m_cur;
  130.                 int                      m_nRefs;
  131.         };
  132.  
  133.         std::vector<CModuleIterator*> m_iteratorPool;
  134.  
  135. };
  136.  
downloadModuleManager.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