BVB Source Codes

CRYENGINE Show FlashUIBaseNode.cpp Source code

Return Download CRYENGINE: download FlashUIBaseNode.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:   FlashUIBaseNode.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 "FlashUIBaseNode.h"
  14. #include "FlashUI.h"
  15.  
  16. int CUIFGStackMan::m_Size = 0;
  17. bool CUIFGStackMan::m_bEnabled = true;
  18. #ifdef ENABLE_UISTACK_DEBUGGING
  19. std::map<int, const char*> CUIFGStackMan::m_debugInfo;
  20. #endif
  21.  
  22. // ---------------------------------------------------------------
  23. // ---------------------------------------------------------------
  24. // ---------------------------------------------------------------
  25. CFlashUIBaseNode::CFlashUIBaseNode()
  26.         : m_pElement(NULL)
  27. {
  28. }
  29.  
  30. // ---------------------------------------------------------------
  31. SInputPortConfig CFlashUIBaseNode::CreateInstanceIdPort()
  32. {
  33.         return InputPortConfig<int>("instanceID", -1, "Instance ID for the element, -1 = all instances (lazy init), -2 = all initialized instances");
  34. }
  35.  
  36. // ---------------------------------------------------------------
  37. SInputPortConfig CFlashUIBaseNode::CreateElementsPort()
  38. {
  39.         return InputPortConfig<string>("uiElements_Element", "", _HELP("Element"));
  40. }
  41.  
  42. // ---------------------------------------------------------------
  43. SInputPortConfig CFlashUIBaseNode::CreateVariablesPort()
  44. {
  45.         return InputPortConfig<string>("uiVariables_Variable", "", _HELP("Variable"));
  46. }
  47.  
  48. // ---------------------------------------------------------------
  49. SInputPortConfig CFlashUIBaseNode::CreateArraysPort()
  50. {
  51.         return InputPortConfig<string>("uiArrays_Array", "", _HELP("Array"));
  52. }
  53.  
  54. // ---------------------------------------------------------------
  55. SInputPortConfig CFlashUIBaseNode::CreateMovieClipsPort()
  56. {
  57.         return InputPortConfig<string>("uiMovieclips_MovieClips", "", _HELP("MovieClip"));
  58. }
  59.  
  60. // ---------------------------------------------------------------
  61. SInputPortConfig CFlashUIBaseNode::CreateMovieClipsParentPort()
  62. {
  63.         return InputPortConfig<string>("uiMovieclips_Parent", _HELP("Parent MovieClip, can be selected from the list or a dynamic instance name of another dynamic create MC"), "ParentMC");
  64. }
  65.  
  66. // ---------------------------------------------------------------
  67. SInputPortConfig CFlashUIBaseNode::CreateMovieClipTmplPort()
  68. {
  69.         return InputPortConfig<string>("uiTemplates_Template", "", _HELP("MovieClip template"));
  70. }
  71. // ---------------------------------------------------------------
  72. SInputPortConfig CFlashUIBaseNode::CreateVariablesForTmplPort()
  73. {
  74.         return InputPortConfig<string>("uiVariablesTmpl_Variable", "", _HELP("Variable"));
  75. }
  76.  
  77. // ---------------------------------------------------------------
  78. SInputPortConfig CFlashUIBaseNode::CreateArraysForTmplPort()
  79. {
  80.         return InputPortConfig<string>("uiArraysTmpl_Array", "", _HELP("Array"));
  81. }
  82.  
  83. // ---------------------------------------------------------------
  84. SInputPortConfig CFlashUIBaseNode::CreateMovieClipsForTmplPort()
  85. {
  86.         return InputPortConfig<string>("uiMovieclipsTmpl_MovieClips", "", _HELP("MovieClip"));
  87. }
  88.  
  89. // ---------------------------------------------------------------
  90. SInputPortConfig CFlashUIBaseNode::CreateTmplInstanceNamePort()
  91. {
  92.         return InputPortConfig<string>("InstanceName", "Instance name of the used template");
  93. }
  94.  
  95. // ---------------------------------------------------------------
  96. void CFlashUIBaseNode::UpdateUIElement(const string& sName, SActivationInfo* pActInfo)
  97. {
  98.         if (gEnv->pFlashUI)
  99.         {
  100.                 m_pElement = gEnv->pFlashUI->GetUIElement(sName);
  101.  
  102.                 if (!m_pElement)
  103.                 {
  104.                         UIACTION_WARNING("FG: UIElement \"%s\" does not exist, referenced at node \"%s\"", sName.c_str(), pActInfo->pGraph->GetNodeTypeName(pActInfo->myID));
  105.                 }
  106.         }
  107. }
  108.  
  109. // ---------------------------------------------------------------
  110. IUIElement* CFlashUIBaseNode::GetInstance(int instanceID)
  111. {
  112.         if (instanceID < 0)
  113.                 instanceID = 0;
  114.  
  115.         if (m_pElement)
  116.         {
  117.                 return m_pElement->GetInstance((uint) instanceID);
  118.         }
  119.  
  120.         return NULL;
  121. }
  122.  
  123. // ---------------------------------------------------------------
  124. // ---------------------------------------------------------------
  125. // ---------------------------------------------------------------
  126. void CFlashUIBaseNodeDynPorts::AddParamInputPorts(const SUIEventDesc::SEvtParams& eventDesc, std::vector<SInputPortConfig>& ports)
  127. {
  128.         for (TUIParams::const_iterator iter = eventDesc.Params.begin(); iter != eventDesc.Params.end(); ++iter)
  129.         {
  130.                 switch (iter->eType)
  131.                 {
  132.                 case SUIParameterDesc::eUIPT_Bool:
  133.                         ports.push_back(InputPortConfig<bool>(iter->sDisplayName, iter->sDesc));
  134.                         break;
  135.                 case SUIParameterDesc::eUIPT_Int:
  136.                         ports.push_back(InputPortConfig<int>(iter->sDisplayName, iter->sDesc));
  137.                         break;
  138.                 case SUIParameterDesc::eUIPT_Float:
  139.                         ports.push_back(InputPortConfig<float>(iter->sDisplayName, iter->sDesc));
  140.                         break;
  141.                 case SUIParameterDesc::eUIPT_Vec3:
  142.                         ports.push_back(InputPortConfig<Vec3>(iter->sDisplayName, iter->sDesc));
  143.                         break;
  144.                 case SUIParameterDesc::eUIPT_String:
  145.                         ports.push_back(InputPortConfig<string>(iter->sDisplayName, iter->sDesc));
  146.                         break;
  147.                 default:
  148.                         ports.push_back(InputPortConfig_AnyType(iter->sDisplayName, iter->sDesc));
  149.                         break;
  150.                 }
  151.         }
  152. }
  153.  
  154. // ---------------------------------------------------------------
  155. void CFlashUIBaseNodeDynPorts::AddParamOutputPorts(const SUIEventDesc::SEvtParams& eventDesc, std::vector<SOutputPortConfig>& ports)
  156. {
  157.         for (TUIParams::const_iterator iter = eventDesc.Params.begin(); iter != eventDesc.Params.end(); ++iter)
  158.         {
  159.                 switch (iter->eType)
  160.                 {
  161.                 case SUIParameterDesc::eUIPT_Bool:
  162.                         ports.push_back(OutputPortConfig<bool>(iter->sDisplayName, iter->sDesc));
  163.                         break;
  164.                 case SUIParameterDesc::eUIPT_Int:
  165.                         ports.push_back(OutputPortConfig<int>(iter->sDisplayName, iter->sDesc));
  166.                         break;
  167.                 case SUIParameterDesc::eUIPT_Float:
  168.                         ports.push_back(OutputPortConfig<float>(iter->sDisplayName, iter->sDesc));
  169.                         break;
  170.                 case SUIParameterDesc::eUIPT_String:
  171.                 case SUIParameterDesc::eUIPT_WString:
  172.                         ports.push_back(OutputPortConfig<string>(iter->sDisplayName, iter->sDesc));
  173.                         break;
  174.                 default:
  175.                         ports.push_back(OutputPortConfig_AnyType(iter->sDisplayName, iter->sDesc));
  176.                         break;
  177.                 }
  178.         }
  179. }
  180.  
  181. // ---------------------------------------------------------------
  182. void CFlashUIBaseNodeDynPorts::AddCheckPorts(const SUIEventDesc::SEvtParams& eventDesc, std::vector<SInputPortConfig>& ports)
  183. {
  184.         m_enumStr = "enum_int:<TriggerAlways>=-1";
  185.         int idx = 0;
  186.         for (TUIParams::const_iterator iter = eventDesc.Params.begin(); iter != eventDesc.Params.end(); ++iter, ++idx)
  187.         {
  188.                 m_enumStr += ",";
  189.                 m_enumStr += iter->sDisplayName;
  190.                 m_enumStr += "=";
  191.                 m_enumStr += idx;
  192.         }
  193.         ports.push_back(InputPortConfig<int>("Port", -1, _HELP("If a port is selected, the node will only trigger if the selected \"Port\" has \"Idx\" value"), 0, _UICONFIG(m_enumStr.c_str())));
  194.         ports.push_back(InputPortConfig<string>("Idx", "Value that is compated with current value of output on selected \"Port\""));
  195. }
  196.  
  197. // ---------------------------------------------------------------
  198. void CFlashUIBaseNodeDynPorts::GetDynInput(SUIArguments& args, const SUIParameterDesc& desc, SActivationInfo* pActInfo, int port)
  199. {
  200.         switch (desc.eType)
  201.         {
  202.         case SUIParameterDesc::eUIPT_Bool:
  203.                 args.AddArgument(GetPortBool(pActInfo, port));
  204.                 break;
  205.         case SUIParameterDesc::eUIPT_Int:
  206.                 args.AddArgument(GetPortInt(pActInfo, port));
  207.                 break;
  208.         case SUIParameterDesc::eUIPT_Float:
  209.                 args.AddArgument(GetPortFloat(pActInfo, port));
  210.                 break;
  211.         case SUIParameterDesc::eUIPT_String:
  212.                 args.AddArgument(GetPortString(pActInfo, port));
  213.                 break;
  214.         case SUIParameterDesc::eUIPT_WString:
  215.                 args.AddArgument(GetPortString(pActInfo, port), eUIDT_WString);
  216.                 break;
  217.         case SUIParameterDesc::eUIPT_Vec3:
  218.                 args.AddArgument(GetPortVec3(pActInfo, port));
  219.                 break;
  220.         default:
  221.                 {
  222.                         string val;
  223.                         const TFlowInputData data = GetPortAny(pActInfo, port);
  224.                         data.GetValueWithConversion(val);
  225.                         args.AddArgument(val, eUIDT_Any);
  226.                 }
  227.                 break;
  228.         }
  229. }
  230.  
  231. // ---------------------------------------------------------------
  232. void CFlashUIBaseNodeDynPorts::ActivateDynOutput(const TUIData& arg, const SUIParameterDesc& desc, SActivationInfo* pActInfo, int port)
  233. {
  234.         switch (desc.eType)
  235.         {
  236.         case SUIParameterDesc::eUIPT_Bool:
  237.                 {
  238.                         bool val;
  239.                         const bool ok = arg.GetValueWithConversion(val);
  240.                         if (!ok) UIACTION_WARNING("FG: Node \"%s\" received wrong data on typed input!", pActInfo->pGraph->GetNodeTypeName(pActInfo->myID));
  241.                         ActivateOutput(pActInfo, port, val);
  242.                 }
  243.                 break;
  244.         case SUIParameterDesc::eUIPT_Int:
  245.                 {
  246.                         int val;
  247.                         const bool ok = arg.GetValueWithConversion(val);
  248.                         if (!ok) UIACTION_WARNING("FG: Node \"%s\" received wrong data on typed input!", pActInfo->pGraph->GetNodeTypeName(pActInfo->myID));
  249.                         ActivateOutput(pActInfo, port, val);
  250.                 }
  251.                 break;
  252.         case SUIParameterDesc::eUIPT_Float:
  253.                 {
  254.                         float val;
  255.                         const bool ok = arg.GetValueWithConversion(val);
  256.                         if (!ok) UIACTION_WARNING("FG: Node \"%s\" received wrong data on typed input!", pActInfo->pGraph->GetNodeTypeName(pActInfo->myID));
  257.                         ActivateOutput(pActInfo, port, val);
  258.                 }
  259.                 break;
  260.         case SUIParameterDesc::eUIPT_String:
  261.         case SUIParameterDesc::eUIPT_WString:
  262.         default:
  263.                 {
  264.                         string val;
  265.                         const bool ok = arg.GetValueWithConversion(val);
  266.                         if (!ok) UIACTION_WARNING("FG: Node \"%s\" received wrong data on typed input!", pActInfo->pGraph->GetNodeTypeName(pActInfo->myID));
  267.                         ActivateOutput(pActInfo, port, val);
  268.                 }
  269.                 break;
  270.         }
  271. }
  272.  
downloadFlashUIBaseNode.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