BVB Source Codes

CRYENGINE Show FlowConditionNode.cpp Source code

Return Download CRYENGINE: download FlowConditionNode.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 <CryFlowGraph/IFlowBaseNode.h>
  5.  
  6. class CFlowNode_LogicCondition : public CFlowBaseNode<eNCT_Instanced>
  7. {
  8.         enum
  9.         {
  10.                 INP_Condition = 0,
  11.                 INP_In,
  12.                 INP_CondFalse,
  13.                 INP_CondTrue
  14.         };
  15.  
  16.         enum
  17.         {
  18.                 OUT_OnFalse = 0,
  19.                 OUT_OnTrue
  20.         };
  21.  
  22. protected:
  23.         bool m_condition;
  24.  
  25. public:
  26.         CFlowNode_LogicCondition(SActivationInfo*) : m_condition(false) {}
  27.  
  28.         IFlowNodePtr Clone(SActivationInfo* pActInfo)
  29.         {
  30.                 return new CFlowNode_LogicCondition(pActInfo);
  31.         }
  32.  
  33.         void Serialize(SActivationInfo*, TSerialize ser)
  34.         {
  35.                 ser.Value("condition", m_condition);
  36.         }
  37.  
  38.         void GetConfiguration(SFlowNodeConfig& config)
  39.         {
  40.                 static const SInputPortConfig in_config[] = {
  41.                         InputPortConfig<bool>("Condition",   _HELP("If condition is FALSE input [In] will be routed to [OnFalse], otherwise to [OnTrue]")),
  42.                         InputPortConfig_AnyType("In",        _HELP("Value to route to [OnFalse] or [OnTrue], based on [Condition]")),
  43.                         InputPortConfig_AnyType("CondFalse", _HELP("Sets [Condition] to false.")),
  44.                         InputPortConfig_AnyType("CondTrue",  _HELP("Sets [Condition] to true.")),
  45.                         { 0 }
  46.                 };
  47.                 static const SOutputPortConfig out_config[] = {
  48.                         OutputPortConfig_AnyType("OnFalse", _HELP("Set to input [In] if [Condition] is FALSE)")),
  49.                         OutputPortConfig_AnyType("OnTrue",  _HELP("Set to input [In] if [Condition] is TRUE")),
  50.                         { 0 }
  51.                 };
  52.                 config.sDescription = _HELP("Node to route data flow based on a boolean condition.\nSetting input [Value] will route it either to [OnFalse] or [OnTrue].");
  53.                 config.pInputPorts = in_config;
  54.                 config.pOutputPorts = out_config;
  55.                 config.SetCategory(EFLN_APPROVED);
  56.  
  57.         }
  58.  
  59.         virtual void GetMemoryUsage(ICrySizer* s) const
  60.         {
  61.                 s->Add(*this);
  62.         }
  63.  
  64.         void ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  65.         {
  66.                 switch (event)
  67.                 {
  68.                 case eFE_Initialize:
  69.                         m_condition = GetPortBool(pActInfo, INP_Condition);
  70.                         break;
  71.  
  72.                 case eFE_Activate:
  73.                         if (IsPortActive(pActInfo, INP_Condition))
  74.                                 m_condition = GetPortBool(pActInfo, INP_Condition);
  75.                         if (IsPortActive(pActInfo, INP_CondFalse))
  76.                                 m_condition = false;
  77.                         if (IsPortActive(pActInfo, INP_CondTrue))
  78.                                 m_condition = true;
  79.  
  80.                         // only port [In] triggers an output
  81.                         if (IsPortActive(pActInfo, INP_In))
  82.                         {
  83.                                 if (m_condition == false)
  84.                                         ActivateOutput(pActInfo, OUT_OnFalse, GetPortAny(pActInfo, INP_In));
  85.                                 else
  86.                                         ActivateOutput(pActInfo, OUT_OnTrue, GetPortAny(pActInfo, INP_In));
  87.                         }
  88.                         break;
  89.                 }
  90.         }
  91. };
  92.  
  93. class CFlowNode_LogicConditionInverse : public CFlowBaseNode<eNCT_Instanced>
  94. {
  95.         enum EInputs
  96.         {
  97.                 IN_CONDITION = 0,
  98.                 IN_CONDFALSE,
  99.                 IN_CONDTRUE,
  100.                 IN_TRUE,
  101.                 IN_FALSE,
  102.         };
  103.  
  104. protected:
  105.         bool m_condition;
  106.  
  107. public:
  108.         CFlowNode_LogicConditionInverse(SActivationInfo*) : m_condition(false) {}
  109.  
  110.         IFlowNodePtr Clone(SActivationInfo* pActInfo)
  111.         {
  112.                 return new CFlowNode_LogicConditionInverse(pActInfo);
  113.         }
  114.  
  115.         void Serialize(SActivationInfo*, TSerialize ser)
  116.         {
  117.                 ser.Value("condition", m_condition);
  118.         }
  119.  
  120.         void GetConfiguration(SFlowNodeConfig& config)
  121.         {
  122.                 static const SInputPortConfig in_config[] = {
  123.                         InputPortConfig<bool>("Condition",   _HELP("If condition is FALSE input [False] will be routed to output, otherwise input [True] will be")),
  124.                         InputPortConfig_AnyType("CondFalse", _HELP("Sets [Condition] to false.")),
  125.                         InputPortConfig_AnyType("CondTrue",  _HELP("Sets [Condition] to true.")),
  126.                         InputPortConfig_AnyType("True",      _HELP("value to redirect to output when [Condition] is TRUE)")),
  127.                         InputPortConfig_AnyType("False",     _HELP("value to redirect to output when [Condition] is FALSE)")),
  128.                         { 0 }
  129.                 };
  130.                 static const SOutputPortConfig out_config[] = {
  131.                         OutputPortConfig_AnyType("Out", _HELP("Value to output from [False] or [True], based on [Condition]")),
  132.                         { 0 }
  133.                 };
  134.                 config.sDescription = _HELP("Node to route data flow based on a boolean condition.\nDepending on [Condition], either input [True] or [False] will be redirected to [out].");
  135.                 config.pInputPorts = in_config;
  136.                 config.pOutputPorts = out_config;
  137.                 config.SetCategory(EFLN_APPROVED);
  138.  
  139.         }
  140.  
  141.         virtual void GetMemoryUsage(ICrySizer* s) const
  142.         {
  143.                 s->Add(*this);
  144.         }
  145.  
  146.         void ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  147.         {
  148.                 switch (event)
  149.                 {
  150.                 case eFE_Initialize:
  151.                         m_condition = GetPortBool(pActInfo, IN_CONDITION);
  152.                         break;
  153.  
  154.                 case eFE_Activate:
  155.                         {
  156.                                 if (IsPortActive(pActInfo, IN_CONDITION))
  157.                                         m_condition = GetPortBool(pActInfo, IN_CONDITION);
  158.                                 if (IsPortActive(pActInfo, IN_CONDFALSE))
  159.                                         m_condition = false;
  160.                                 if (IsPortActive(pActInfo, IN_CONDTRUE))
  161.                                         m_condition = true;
  162.  
  163.                                 if (m_condition)
  164.                                 {
  165.                                         if (IsPortActive(pActInfo, IN_TRUE))
  166.                                                 ActivateOutput(pActInfo, 0, GetPortAny(pActInfo, IN_TRUE));
  167.                                 }
  168.                                 else
  169.                                 {
  170.                                         if (IsPortActive(pActInfo, IN_FALSE))
  171.                                                 ActivateOutput(pActInfo, 0, GetPortAny(pActInfo, IN_FALSE));
  172.                                 }
  173.                                 break;
  174.                         }
  175.                 }
  176.         }
  177. };
  178.  
  179. REGISTER_FLOW_NODE("Logic:Condition", CFlowNode_LogicCondition)
  180. REGISTER_FLOW_NODE("Logic:ConditionInverse", CFlowNode_LogicConditionInverse)
  181.  
downloadFlowConditionNode.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