BVB Source Codes

CRYENGINE Show FlowScriptedNode.h Source code

Return Download CRYENGINE: download FlowScriptedNode.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef __FLOWSCRIPTEDNODE_H__
  4. #define __FLOWSCRIPTEDNODE_H__
  5.  
  6. #pragma once
  7.  
  8. #include <CryFlowGraph/IFlowSystem.h>
  9.  
  10. class CFlowScriptedNodeFactory;
  11. TYPEDEF_AUTOPTR(CFlowScriptedNodeFactory);
  12. typedef CFlowScriptedNodeFactory_AutoPtr CFlowScriptedNodeFactoryPtr;
  13. class CFlowSimpleScriptedNodeFactory;
  14. TYPEDEF_AUTOPTR(CFlowSimpleScriptedNodeFactory);
  15. typedef CFlowSimpleScriptedNodeFactory_AutoPtr CFlowSimpleScriptedNodeFactoryPtr;
  16.  
  17. class CFlowScriptedNode : public IFlowNode
  18. {
  19. public:
  20.         CFlowScriptedNode(const SActivationInfo*, CFlowScriptedNodeFactoryPtr, SmartScriptTable);
  21.         ~CFlowScriptedNode();
  22.  
  23.         // IFlowNode
  24.         virtual void         AddRef();
  25.         virtual void         Release();
  26.         virtual IFlowNodePtr Clone(SActivationInfo* pActInfo);
  27.         virtual void         GetConfiguration(SFlowNodeConfig&);
  28.         virtual void         ProcessEvent(EFlowEvent event, SActivationInfo*);
  29.         virtual bool         SerializeXML(SActivationInfo*, const XmlNodeRef& root, bool reading);
  30.         virtual void         Serialize(SActivationInfo*, TSerialize ser);
  31.         virtual void         PostSerialize(SActivationInfo*) {}
  32.         virtual void         GetMemoryUsage(ICrySizer* s) const;
  33.         // ~IFlowNode
  34.  
  35.         int ActivatePort(IFunctionHandler* pH, size_t nOutput, const TFlowInputData& data);
  36.  
  37. private:
  38.         int                         m_refs;
  39.         SActivationInfo             m_info;
  40.         SmartScriptTable            m_table;
  41.         CFlowScriptedNodeFactoryPtr m_pFactory;
  42. };
  43.  
  44. class CFlowScriptedNodeFactory : public IFlowNodeFactory
  45. {
  46. public:
  47.         CFlowScriptedNodeFactory();
  48.         ~CFlowScriptedNodeFactory();
  49.  
  50.         bool                 Init(const char* path, const char* name);
  51.  
  52.         virtual void         AddRef();
  53.         virtual void         Release();
  54.         virtual IFlowNodePtr Create(IFlowNode::SActivationInfo*);
  55.  
  56.         ILINE size_t         NumInputs() const      { return m_inputs.size() - 1; }
  57.         ILINE const char*    InputName(int n) const { return m_inputs[n].name; }
  58.         void                 GetConfiguration(SFlowNodeConfig&);
  59.  
  60.         virtual void         GetMemoryUsage(ICrySizer* s) const;
  61.  
  62.         void                 Reset() {}
  63.  
  64. private:
  65.         int                            m_refs;
  66.         SmartScriptTable               m_table;
  67.  
  68.         std::set<string>               m_stringTable;
  69.         std::vector<SInputPortConfig>  m_inputs;
  70.         std::vector<SOutputPortConfig> m_outputs;
  71.         uint32                         m_category;
  72.  
  73.         const string& AddString(const char* str);
  74.  
  75.         static int    ActivateFunction(IFunctionHandler* pH, void* pBuffer, int nSize);
  76. };
  77.  
  78. class CFlowSimpleScriptedNode : public IFlowNode
  79. {
  80. public:
  81.         CFlowSimpleScriptedNode(const SActivationInfo*, CFlowSimpleScriptedNodeFactoryPtr);
  82.         ~CFlowSimpleScriptedNode();
  83.  
  84.         // IFlowNode
  85.         virtual void         AddRef();
  86.         virtual void         Release();
  87.         virtual IFlowNodePtr Clone(SActivationInfo* pActInfo);
  88.         virtual void         GetConfiguration(SFlowNodeConfig&);
  89.         virtual void         ProcessEvent(EFlowEvent event, SActivationInfo*);
  90.         virtual bool         SerializeXML(SActivationInfo*, const XmlNodeRef& root, bool reading);
  91.         virtual void         Serialize(SActivationInfo*, TSerialize ser);
  92.         virtual void         PostSerialize(SActivationInfo*) {};
  93.         // ~IFlowNode
  94.  
  95.         int          ActivatePort(IFunctionHandler* pH, size_t nOutput, const TFlowInputData& data);
  96.  
  97.         virtual void GetMemoryUsage(ICrySizer* s) const
  98.         {
  99.                 s->Add(*this);
  100.         }
  101.  
  102. private:
  103.         int m_refs;
  104.         CFlowSimpleScriptedNodeFactoryPtr m_pFactory;
  105. };
  106.  
  107. class CFlowSimpleScriptedNodeFactory : public IFlowNodeFactory
  108. {
  109. public:
  110.         CFlowSimpleScriptedNodeFactory();
  111.         ~CFlowSimpleScriptedNodeFactory();
  112.  
  113.         bool                 Init(const char* path, const char* name);
  114.  
  115.         virtual void         AddRef();
  116.         virtual void         Release();
  117.         virtual IFlowNodePtr Create(IFlowNode::SActivationInfo*);
  118.  
  119.         ILINE size_t         NumInputs() const      { return m_inputs.size() - 1; }
  120.         ILINE const char*    InputName(int n) const { return m_inputs[n].name; }
  121.         ILINE int            GetActivateFlags()     { return activateFlags; }
  122.         void                 GetConfiguration(SFlowNodeConfig&);
  123.  
  124.         bool                 CallFunction(IFlowNode::SActivationInfo* pInputData);
  125.         HSCRIPTFUNCTION      GetFunction() { return m_func; }
  126.  
  127.         virtual void         GetMemoryUsage(ICrySizer* s) const;
  128.  
  129.         void                 Reset() {}
  130.  
  131. private:
  132.         int                            m_refs;
  133.         HSCRIPTFUNCTION                m_func;
  134.  
  135.         std::set<string>               m_stringTable;
  136.         std::vector<SInputPortConfig>  m_inputs;
  137.         std::vector<SOutputPortConfig> m_outputs;
  138.         std::vector<ScriptAnyValue>    m_outputValues;
  139.         uint32                         m_category;
  140.  
  141.         const string&                  AddString(const char* str);
  142.         int                            activateFlags; // one bit per input port; true means a value change will activate the node
  143. };
  144.  
  145. #endif
  146.  
downloadFlowScriptedNode.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