BVB Source Codes

CRYENGINE Show FlowLogNode.cpp Source code

Return Download CRYENGINE: download FlowLogNode.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 "FlowLogNode.h"
  5.  
  6. #include <CryFlowGraph/IFlowBaseNode.h>
  7.  
  8. CFlowLogNode::CFlowLogNode()
  9. {
  10.         m_refs = 0;
  11. }
  12.  
  13. void CFlowLogNode::AddRef()
  14. {
  15.         ++m_refs;
  16. }
  17.  
  18. void CFlowLogNode::Release()
  19. {
  20.         if (0 == --m_refs)
  21.                 delete this;
  22. }
  23.  
  24. IFlowNodePtr CFlowLogNode::Clone(SActivationInfo* pActInfo)
  25. {
  26.         // we keep no state:
  27.         return this;
  28. }
  29.  
  30. void CFlowLogNode::GetConfiguration(SFlowNodeConfig& config)
  31. {
  32.         static const SInputPortConfig inconfig[] = {
  33.                 InputPortConfig_Void("input"),
  34.                 InputPortConfig<string>("message","no message set"),
  35.                 { 0 }
  36.         };
  37.  
  38.         config.pInputPorts = inconfig;
  39.         config.pOutputPorts = NULL;
  40.         config.SetCategory(EFLN_DEBUG);
  41. }
  42.  
  43. void CFlowLogNode::ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  44. {
  45.         if (event == eFE_Activate && pActInfo->pInputPorts[0].IsUserFlagSet())
  46.         {
  47.                 string data;
  48.                 pActInfo->pInputPorts[1].GetValueWithConversion(data);
  49.                 CryLogAlways("[flow-log] %s", data.c_str());
  50.         }
  51. }
  52.  
  53. bool CFlowLogNode::SerializeXML(SActivationInfo*, const XmlNodeRef& root, bool reading)
  54. {
  55.         return true;
  56. }
  57.  
  58. void CFlowLogNode::Serialize(SActivationInfo*, TSerialize ser)
  59. {
  60. }
  61.  
  62. //////////////////////////////////////////////////////////////////////////
  63. class CFlowNode_CSVDumper : public CFlowBaseNode<eNCT_Instanced>
  64. {
  65. public:
  66.         CFlowNode_CSVDumper(SActivationInfo* pActInfo) : m_file(0) {};
  67.         virtual ~CFlowNode_CSVDumper() { if (m_file) fclose(m_file); m_file = 0; };
  68.         virtual IFlowNodePtr Clone(SActivationInfo* pActInfo) { return new CFlowNode_CSVDumper(pActInfo); }
  69.         void                 Serialize(SActivationInfo*, TSerialize ser)
  70.         {
  71.                 if (ser.IsReading())
  72.                         m_file = 0;
  73.         }
  74.  
  75.         virtual void GetMemoryUsage(ICrySizer* s) const
  76.         {
  77.                 s->Add(*this);
  78.         }
  79.  
  80.         virtual void GetConfiguration(SFlowNodeConfig& config)
  81.         {
  82.                 static const SInputPortConfig in_config[] = {
  83.                         InputPortConfig<string>("filename"),
  84.                         InputPortConfig<string>("name"),
  85.                         InputPortConfig_AnyType("value0"),
  86.                         InputPortConfig<string>("name"),
  87.                         InputPortConfig_AnyType("value1"),
  88.                         InputPortConfig<string>("name"),
  89.                         InputPortConfig_AnyType("value2"),
  90.                         InputPortConfig<string>("name"),
  91.                         InputPortConfig_AnyType("value3"),
  92.                         InputPortConfig<string>("name"),
  93.                         InputPortConfig_AnyType("value4"),
  94.                         InputPortConfig<string>("name"),
  95.                         InputPortConfig_AnyType("value5"),
  96.                         InputPortConfig<string>("name"),
  97.                         InputPortConfig_AnyType("value6"),
  98.                         InputPortConfig<string>("name"),
  99.                         InputPortConfig_AnyType("value7"),
  100.                         InputPortConfig<string>("name"),
  101.                         InputPortConfig_AnyType("value8"),
  102.                         InputPortConfig<string>("name"),
  103.                         InputPortConfig_AnyType("value9"),
  104.                         { 0 }
  105.                 };
  106.                 static const SOutputPortConfig out_config[] = {
  107.                         { 0 }
  108.                 };
  109.                 config.pInputPorts = in_config;
  110.                 config.pOutputPorts = out_config;
  111.                 config.SetCategory(EFLN_ADVANCED);
  112.         }
  113.         virtual void ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  114.         {
  115.                 switch (event)
  116.                 {
  117.                 case eFE_Activate:
  118.                         {
  119.                                 if (!m_file)
  120.                                 {
  121.                                         const string& filename = GetPortString(pActInfo, 0);
  122.                                         if (filename.empty())
  123.                                                 return;
  124.  
  125.                                         if (!(m_file = fopen(filename.c_str(), "w+")))
  126.                                                 return;
  127.  
  128.                                         string name;
  129.                                         name.reserve(256);
  130.  
  131.                                         for (int i = 0; i < 10; i++)
  132.                                                 if (GetPortString(pActInfo, 1 + i * 2).length())
  133.                                                         name += GetPortString(pActInfo, 1 + i * 2) + ",";
  134.  
  135.                                         fputs(name.c_str(), m_file);
  136.                                         fputs("\n", m_file);
  137.                                 }
  138.  
  139.                                 string value;
  140.                                 value.reserve(256);
  141.  
  142.                                 for (int i = 0; i < 10; i++)
  143.                                         if (GetPortString(pActInfo, 1 + i * 2).length())
  144.                                                 value += GetPortString(pActInfo, 2 + i * 2) + ",";
  145.  
  146.                                 fputs(value.c_str(), m_file);
  147.                                 fputs("\n", m_file);
  148.                                 fflush(m_file);
  149.                         }
  150.                         break;
  151.                 }
  152.                 ;
  153.         };
  154.  
  155. private:
  156.         FILE* m_file;
  157. };
  158.  
  159. REGISTER_FLOW_NODE("Debug:CSVDumper", CFlowNode_CSVDumper);
  160.  
downloadFlowLogNode.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