BVB Source Codes

CRYENGINE Show FlowCompositeNode.h Source code

Return Download CRYENGINE: download FlowCompositeNode.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 "../FlowGraph.h"
  6. #include <CryFlowGraph/IFlowBaseNode.h>
  7.  
  8. class CFlowSystem;
  9.  
  10. class CFlowCompositeNodeFactory;
  11. TYPEDEF_AUTOPTR(CFlowCompositeNodeFactory);
  12. typedef CFlowCompositeNodeFactory_AutoPtr CFlowCompositeNodeFactoryPtr;
  13.  
  14. class CFlowCompositeNode;
  15.  
  16. namespace NFlowCompositeHelpers
  17. {
  18.  
  19. class CHook;
  20. TYPEDEF_AUTOPTR(CHook);
  21. typedef CHook_AutoPtr CHookPtr;
  22.  
  23. class CHook : public IFlowGraphHook
  24. {
  25. public:
  26.         CHook(CFlowSystem*, CFlowCompositeNodeFactoryPtr);
  27.         virtual void                        AddRef();
  28.         virtual void                        Release();
  29.         virtual IFlowNodePtr                CreateNode(IFlowNode::SActivationInfo*, TFlowNodeTypeId typeId);
  30.         virtual bool                        CreatedNode(TFlowNodeId id, const char* name, TFlowNodeTypeId typeId, IFlowNodePtr pNode);
  31.         virtual void                        CancelCreatedNode(TFlowNodeId id, const char* name, TFlowNodeTypeId typeId, IFlowNodePtr pNode);
  32.         virtual IFlowGraphHook::EActivation PerformActivation(IFlowGraphPtr pFlowgraph, TFlowNodeId srcNode, TFlowPortId srcPort, TFlowNodeId toNode, TFlowPortId toPort, const TFlowInputData* value) { return eFGH_Pass; };
  33.         TFlowNodeId                         GetID() const                                                                                                                                              { return m_bFail ? InvalidFlowNodeId : m_id; }
  34.  
  35. private:
  36.         int                          m_refs;
  37.         CFlowSystem*                 m_pFlowSystem;
  38.         CFlowCompositeNodeFactoryPtr m_pFactory;
  39.         TFlowNodeId                  m_id;
  40.         bool                         m_bFail;
  41. };
  42.  
  43. class CCompositeInteriorNode : public IFlowNode
  44. {
  45. public:
  46.         CCompositeInteriorNode(CFlowCompositeNodeFactoryPtr pFactory);
  47.  
  48.         virtual void         AddRef();
  49.         virtual void         Release();
  50.         virtual IFlowNodePtr Clone(SActivationInfo*);
  51.  
  52.         virtual void         GetConfiguration(SFlowNodeConfig&);
  53.         virtual void         ProcessEvent(EFlowEvent event, SActivationInfo*);
  54.         virtual bool         SerializeXML(SActivationInfo*, const XmlNodeRef& root, bool reading);
  55.         virtual void         Serialize(SActivationInfo*, TSerialize ser);
  56.         virtual void         PostSerialize(SActivationInfo*) {}
  57.  
  58.         virtual void         GetMemoryUsage(ICrySizer* s) const;
  59.  
  60. private:
  61.         int                          m_refs;
  62.         CFlowCompositeNodeFactoryPtr m_pFactory;
  63.         CFlowCompositeNode*          m_pParent;
  64. };
  65.  
  66. class CCompositeGraph : public CFlowGraph
  67. {
  68. public:
  69.         CCompositeGraph(CFlowSystem*);
  70.         virtual IFlowGraphPtr       Clone();
  71.         void                        Reparent(CFlowCompositeNode* pParent) { m_pParent = pParent; }
  72.         IFlowNode::SActivationInfo* GetParentInfo();
  73.  
  74.         virtual void                GetMemoryUsage(ICrySizer* s) const;
  75.  
  76. private:
  77.         CFlowCompositeNode* m_pParent;
  78. };
  79.  
  80. TYPEDEF_AUTOPTR(CCompositeGraph);
  81. typedef CCompositeGraph_AutoPtr CCompositeGraphPtr;
  82.  
  83. }
  84.  
  85. class CFlowCompositeNode : public IFlowNode
  86. {
  87. public:
  88.         CFlowCompositeNode(SActivationInfo* pActInfo, IFlowGraphPtr pGraph, CFlowCompositeNodeFactoryPtr pFactory);
  89.  
  90.         // IFlowNode
  91.         virtual void         AddRef();
  92.         virtual void         Release();
  93.         virtual IFlowNodePtr Clone(SActivationInfo*);
  94.  
  95.         virtual void         GetConfiguration(SFlowNodeConfig&);
  96.         virtual void         ProcessEvent(EFlowEvent event, SActivationInfo*);
  97.         virtual bool         SerializeXML(SActivationInfo*, const XmlNodeRef& root, bool reading);
  98.         virtual void         Serialize(SActivationInfo*, TSerialize ser);
  99.         virtual void         PostSerialize(SActivationInfo*) {}
  100.         // ~IFlowNode
  101.  
  102.         virtual void     GetMemoryUsage(ICrySizer* s) const;
  103.  
  104.         SActivationInfo* GetParentInfo() { return &m_parentInfo; }
  105.  
  106. private:
  107.         int                          m_refs;
  108.         SActivationInfo              m_parentInfo;
  109.         IFlowGraphPtr                m_pGraph;
  110.         CFlowCompositeNodeFactoryPtr m_pFactory;
  111. };
  112.  
  113. class CFlowCompositeNodeFactory : public IFlowNodeFactory
  114. {
  115. public:
  116.         CFlowCompositeNodeFactory();
  117.         ~CFlowCompositeNodeFactory();
  118.  
  119.         enum EInitResult
  120.         {
  121.                 eIR_NotYet,
  122.                 eIR_Ok,
  123.                 eIR_Failed
  124.         };
  125.  
  126.         EInitResult       Init(XmlNodeRef node, CFlowSystem* pSystem);
  127.         void              GetConfiguration(bool exterior, SFlowNodeConfig&);
  128.         ILINE TFlowNodeId GetInterfaceNode() const               { return m_interfaceNode; }
  129.         ILINE size_t      GetInputPortCount(bool exterior) const { return (exterior ? m_inputsExt : m_inputsInt).size(); }
  130.  
  131.         // IFlowNodeFactory
  132.         virtual void         AddRef();
  133.         virtual void         Release();
  134.         virtual IFlowNodePtr Create(IFlowNode::SActivationInfo* pActInfo);
  135.  
  136.         virtual void         GetMemoryUsage(ICrySizer* s) const;
  137.  
  138.         void                 Reset() {}
  139.         // ~IFlowNodeFactory
  140.  
  141. private:
  142.         int           m_nRefs;
  143.         NFlowCompositeHelpers::CCompositeGraphPtr m_pPrototypeGraph;
  144.         TFlowNodeId   m_interfaceNode;
  145.  
  146.         const string& AddString(const char* str);
  147.         typedef std::pair<SInputPortConfig, SOutputPortConfig> TPortPair;
  148.         typedef std::unique_ptr<TPortPair>                     TPortPairPtr;
  149.         TPortPairPtr GeneratePortsFromXML(XmlNodeRef port);
  150.  
  151.         std::vector<string>            m_stringPool;
  152.         std::vector<SInputPortConfig>  m_inputsInt;
  153.         std::vector<SOutputPortConfig> m_outputsInt;
  154.         std::vector<SInputPortConfig>  m_inputsExt;
  155.         std::vector<SOutputPortConfig> m_outputsExt;
  156. };
  157.  
downloadFlowCompositeNode.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