BVB Source Codes

CRYENGINE Show FlashUIEventNodes.cpp Source code

Return Download CRYENGINE: download FlashUIEventNodes.cpp Source code - Download CRYENGINE Source code - Type:.cpp
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. // -------------------------------------------------------------------------
  4. //  File name:   FlashUIEventNodes.cpp
  5. //  Version:     v1.00
  6. //  Created:     10/9/2010 by Paul Reindell.
  7. //  Description:
  8. // -------------------------------------------------------------------------
  9. //  History:
  10. //
  11. ////////////////////////////////////////////////////////////////////////////
  12. #include "StdAfx.h"
  13. #include "FlashUIEventNodes.h"
  14. #include "FlashUIBaseNode.h"
  15.  
  16. //--------------------------------------------------------------------------------------------
  17. CFlashUIEventSystemFunctionNode::CFlashUIEventSystemFunctionNode(IUIEventSystem* pSystem, string sCategory, const SUIEventDesc* pEventDesc)
  18.         : CFlashUIBaseNodeDynPorts(sCategory)
  19.         , m_pSystem(pSystem)
  20. {
  21.         CRY_ASSERT_MESSAGE(m_pSystem && pEventDesc, "NULL pointer passed!");
  22.  
  23.         m_eventDesc = *pEventDesc;
  24.         m_iEventId = m_pSystem->GetEventId(pEventDesc->sName);
  25.  
  26.         m_inPorts.push_back(InputPortConfig_Void("send", "Send the event to the engine"));
  27.         AddParamInputPorts(m_eventDesc.InputParams, m_inPorts);
  28.         if (m_eventDesc.InputParams.IsDynamic)
  29.                 m_inPorts.push_back(InputPortConfig<string>("Array", m_eventDesc.InputParams.sDynamicDesc, m_eventDesc.InputParams.sDynamicName));
  30.         m_inPorts.push_back(InputPortConfig_Void(NULL));
  31.  
  32.         m_outPorts.push_back(OutputPortConfig_Void("OnEvent", "Triggered once the event was sent"));
  33.         AddParamOutputPorts(m_eventDesc.OutputParams, m_outPorts);
  34.         if (m_eventDesc.OutputParams.IsDynamic)
  35.                 m_outPorts.push_back(OutputPortConfig<string>("Array", m_eventDesc.OutputParams.sDynamicDesc, m_eventDesc.OutputParams.sDynamicName));
  36.         m_outPorts.push_back(OutputPortConfig_Void(NULL));
  37. }
  38.  
  39. CFlashUIEventSystemFunctionNode::~CFlashUIEventSystemFunctionNode()
  40. {
  41. }
  42.  
  43. IFlowNodePtr CFlashUIEventSystemFunctionNode::Clone(SActivationInfo* pActInfo)
  44. {
  45.         return IFlowNodePtr(new CFlashUIEventSystemFunctionNode(m_pSystem, GetCategory(), &m_eventDesc));
  46. }
  47.  
  48. void CFlashUIEventSystemFunctionNode::GetConfiguration(SFlowNodeConfig& config)
  49. {
  50.         config.pInputPorts = &m_inPorts[0];
  51.         config.pOutputPorts = &m_outPorts[0];
  52.         config.sDescription = m_eventDesc.sDesc;
  53.         config.SetCategory(EFLN_APPROVED);
  54. }
  55.  
  56. void CFlashUIEventSystemFunctionNode::ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  57. {
  58.         switch (event)
  59.         {
  60.         case eFE_Activate:
  61.                 if (IsPortActive(pActInfo, eI_Send))
  62.                 {
  63.                         int port = 1;
  64.                         SUIArguments args;
  65.                         for (TUIParams::const_iterator iter = m_eventDesc.InputParams.Params.begin(); iter != m_eventDesc.InputParams.Params.end(); ++iter)
  66.                                 GetDynInput(args, *iter, pActInfo, port++);
  67.  
  68.                         if (m_eventDesc.InputParams.IsDynamic)
  69.                         {
  70.                                 string val;
  71.                                 const TFlowInputData& data = GetPortAny(pActInfo, port++);
  72.                                 data.GetValueWithConversion(val);
  73.                                 args.AddArguments(val.c_str());
  74.                         }
  75.                         SUIArgumentsRet res = m_pSystem->SendEvent(SUIEvent(m_iEventId, args));
  76.  
  77.                         int end = m_eventDesc.OutputParams.Params.size();
  78.                         int i = 0;
  79.                         for (; i < end; ++i)
  80.                         {
  81.                                 CRY_ASSERT_MESSAGE(i < res.GetArgCount(), "UIEvent returns wrong number of arguments!");
  82.                                 ActivateDynOutput(i < res.GetArgCount() ? res.GetArg(i) : TUIData(string("")), m_eventDesc.OutputParams.Params[i], pActInfo, i + 1);
  83.                         }
  84.                         if (m_eventDesc.OutputParams.IsDynamic)
  85.                         {
  86.                                 string val;
  87.                                 SUIArguments dynarg;
  88.                                 for (; i < res.GetArgCount(); ++i)
  89.                                 {
  90.                                         if (res.GetArg(i, val))
  91.                                                 dynarg.AddArgument(val);
  92.                                 }
  93.                                 ActivateOutput(pActInfo, end + 1, string(dynarg.GetAsString()));
  94.                         }
  95.                         ActivateOutput(pActInfo, eO_OnEvent, true);
  96.                 }
  97.                 break;
  98.         }
  99. }
  100.  
  101. //--------------------------------------------------------------------------------------------
  102. CFlashUIEventSystemEventNode::CFlashUIEventSystemEventNode(IUIEventSystem* pSystem, string sCategory, const SUIEventDesc* pEventDesc)
  103.         : CFlashUIBaseNodeDynPorts(sCategory)
  104.         , m_pSystem(pSystem)
  105. {
  106.         CRY_ASSERT_MESSAGE(m_pSystem && pEventDesc, "NULL pointer passed!");
  107.  
  108.         m_iEventId = m_pSystem->GetEventId(pEventDesc->sName);
  109.         m_eventDesc = *pEventDesc;
  110.  
  111.         //inputs
  112.         AddCheckPorts(m_eventDesc.InputParams, m_inPorts);
  113.         m_inPorts.push_back(InputPortConfig_Void(NULL));
  114.  
  115.         // outputs
  116.         m_outPorts.push_back(OutputPortConfig_Void("onEvent", "On event"));
  117.         AddParamOutputPorts(m_eventDesc.InputParams, m_outPorts);
  118.         if (m_eventDesc.InputParams.IsDynamic)
  119.                 m_outPorts.push_back(OutputPortConfig<string>("Array", m_eventDesc.InputParams.sDynamicDesc, m_eventDesc.InputParams.sDynamicName));
  120.         m_outPorts.push_back(OutputPortConfig_Void(NULL));
  121.  
  122.         m_pSystem->RegisterListener(this, "CFlashUIEventSystemEventNode");
  123. }
  124.  
  125. CFlashUIEventSystemEventNode::~CFlashUIEventSystemEventNode()
  126. {
  127.         m_events.clear();
  128.         if (m_pSystem)
  129.                 m_pSystem->UnregisterListener(this);
  130. }
  131.  
  132. IFlowNodePtr CFlashUIEventSystemEventNode::Clone(SActivationInfo* pActInfo)
  133. {
  134.         return IFlowNodePtr(new CFlashUIEventSystemEventNode(m_pSystem, GetCategory(), &m_eventDesc));
  135. }
  136.  
  137. void CFlashUIEventSystemEventNode::GetConfiguration(SFlowNodeConfig& config)
  138. {
  139.         config.pInputPorts = &m_inPorts[0];
  140.         config.pOutputPorts = &m_outPorts[0];
  141.         config.sDescription = m_eventDesc.sDesc;
  142.         config.SetCategory(EFLN_APPROVED);
  143. }
  144.  
  145. void CFlashUIEventSystemEventNode::ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  146. {
  147.         if (event == eFE_Initialize)
  148.         {
  149.                 m_events.clear();
  150.                 m_events.init(pActInfo->pGraph);
  151.                 pActInfo->pGraph->SetRegularlyUpdated(pActInfo->myID, true);
  152.         }
  153.         else if (event == eFE_Update)
  154.         {
  155.                 FlushNextEvent(pActInfo);
  156.         }
  157. }
  158.  
  159. SUIArgumentsRet CFlashUIEventSystemEventNode::OnEvent(const SUIEvent& event)
  160. {
  161.         if (m_iEventId == event.event)
  162.         {
  163.                 UI_STACK_PUSH(m_events, event.args, "OnEvent %s (%s)", m_eventDesc.sDisplayName, event.args.GetAsString());
  164.         }
  165.         return SUIArguments();
  166. }
  167.  
  168. void CFlashUIEventSystemEventNode::FlushNextEvent(SActivationInfo* pActInfo)
  169. {
  170.         if (m_events.size() > 0)
  171.         {
  172.                 const SUIArguments& args = m_events.get();
  173.                 bool bTriggerEvent = true;
  174.                 const int checkValue = GetPortInt(pActInfo, eI_CheckPort);
  175.  
  176.                 if (checkValue >= 0)
  177.                 {
  178.                         bTriggerEvent = false;
  179.                         CRY_ASSERT_MESSAGE(checkValue < args.GetArgCount(), "Port does not exist!");
  180.                         if (checkValue < args.GetArgCount())
  181.                         {
  182.                                 string val = GetPortString(pActInfo, eI_CheckValue);
  183.                                 string compstr;
  184.                                 args.GetArg(checkValue).GetValueWithConversion(compstr);
  185.                                 bTriggerEvent = val == compstr;
  186.                         }
  187.                 }
  188.  
  189.                 if (bTriggerEvent)
  190.                 {
  191.                         int end = m_eventDesc.InputParams.Params.size();
  192.                         int i = 0;
  193.                         for (; i < end; ++i)
  194.                         {
  195.                                 CRY_ASSERT_MESSAGE(i < args.GetArgCount(), "UIEvent received wrong number of arguments!");
  196.                                 ActivateDynOutput(i < args.GetArgCount() ? args.GetArg(i) : TUIData(string("")), m_eventDesc.InputParams.Params[i], pActInfo, i + 1);
  197.                         }
  198.                         if (m_eventDesc.InputParams.IsDynamic)
  199.                         {
  200.                                 string val;
  201.                                 SUIArguments dynarg;
  202.                                 for (; i < args.GetArgCount(); ++i)
  203.                                 {
  204.                                         if (args.GetArg(i, val))
  205.                                                 dynarg.AddArgument(val);
  206.                                 }
  207.                                 ActivateOutput(pActInfo, end + 1, string(dynarg.GetAsString()));
  208.                         }
  209.                         ActivateOutput(pActInfo, eO_OnEvent, true);
  210.                 }
  211.                 m_events.pop();
  212.         }
  213. }
  214.  
downloadFlashUIEventNodes.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