BVB Source Codes

CRYENGINE Show FlowHUDNodes.cpp Source code

Return Download CRYENGINE: download FlowHUDNodes.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:   FlowHUDNodes.cpp
  5. //  Version:     v1.00
  6. //  Created:     July 4th 2005 by Julien.
  7. //  Compilers:   Visual Studio.NET 2003
  8. //  Description:
  9. // -------------------------------------------------------------------------
  10. //  History:
  11. //
  12. ////////////////////////////////////////////////////////////////////////////
  13.  
  14. #include "StdAfx.h"
  15. #include "CryActionCVars.h"
  16. #include "../FlowSystemCVars.h"
  17. #include "FlowFrameworkBaseNode.h"
  18.  
  19. #include <CryAction.h>
  20. #include <IGameObjectSystem.h>
  21. #include <CryString/StringUtils.h>
  22. #include <IActorSystem.h>
  23. #include <PersistantDebug.h>
  24.  
  25. // display a debug message in the HUD
  26. class CFlowNode_DisplayDebugMessage : public CFlowFrameworkBaseNode<eNCT_Instanced>
  27. {
  28.         enum
  29.         {
  30.                 INP_Show = 0,
  31.                 INP_Hide,
  32.                 INP_Message,
  33.                 INP_DisplayTime,
  34.                 INP_X,
  35.                 INP_Y,
  36.                 INP_FontSize,
  37.                 INP_Color,
  38.                 INP_Centered,
  39.         };
  40.  
  41.         enum
  42.         {
  43.                 OUT_Show = 0,
  44.                 OUT_Hide
  45.         };
  46.  
  47. public:
  48.         CFlowNode_DisplayDebugMessage(SActivationInfo* pActInfo)
  49.                 : m_isVisible(false)
  50.                 , m_isPermanent(false)
  51.                 , m_showTimeLeft(0)
  52.         {
  53.  
  54.         }
  55.  
  56.         virtual IFlowNodePtr Clone(SActivationInfo* pActInfo)
  57.         {
  58.                 return new CFlowNode_DisplayDebugMessage(pActInfo);
  59.         }
  60.  
  61.         void Serialize(SActivationInfo* pActInfo, TSerialize ser)
  62.         {
  63.                 ser.Value("m_isVisible", m_isVisible);
  64.                 ser.Value("m_isPermanent", m_isPermanent);
  65.                 ser.Value("m_showTimeLeft", m_showTimeLeft);
  66.         }
  67.  
  68.         void GetConfiguration(SFlowNodeConfig& config)
  69.         {
  70.                 // declare input ports
  71.                 static const SInputPortConfig in_ports[] =
  72.                 {
  73.                         InputPortConfig_AnyType("Show",       _HELP("Show message")),
  74.                         InputPortConfig_AnyType("Hide",       _HELP("Hide message")),
  75.                         InputPortConfig<string>("message",    _HELP("Display this message on the hud")),
  76.                         InputPortConfig<float>("DisplayTime", 0.f,                                      _HELP("How much time the message will be visible. 0 = permanently visible.")),
  77.  
  78.                         // this floating point input port is the x position where the message should be displayed
  79.                         InputPortConfig<float>("posX",        50.0f,                                    _HELP("Input x text position")),
  80.                         // this floating point input port is the y position where the message should be displayed
  81.                         InputPortConfig<float>("posY",        50.0f,                                    _HELP("Input y text position")),
  82.                         // this floating point input port is the font size of the message that should be displayed
  83.                         InputPortConfig<float>("fontSize",    2.0f,                                     _HELP("Input font size")),
  84.                         InputPortConfig<Vec3>("clr_Color",    Vec3(1.f,                                 1.f,                                               1.f),0, _HELP("color")),
  85.                         InputPortConfig<bool>("centered",     false,                                    _HELP("centers the text around the coordinates")),
  86.                         { 0 }
  87.                 };
  88.                 static const SOutputPortConfig out_ports[] =
  89.                 {
  90.                         OutputPortConfig_AnyType("Show", _HELP("")),
  91.                         OutputPortConfig_AnyType("Hide", _HELP("")),
  92.                         { 0 }
  93.                 };
  94.                 // we set pointers in "config" here to specify which input and output ports the node contains
  95.                 config.nFlags |= EFLN_TARGET_ENTITY | EFLN_AISEQUENCE_SUPPORTED;
  96.                 config.pInputPorts = in_ports;
  97.                 config.pOutputPorts = out_ports;
  98.                 config.SetCategory(EFLN_DEBUG);
  99.                 config.sDescription = _HELP("If an entity is not provided, the local player will be used instead");
  100.         }
  101.  
  102.         void ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  103.         {
  104.                 if (CFlowSystemCVars::Get().m_noDebugText != 0)
  105.                         return;
  106.                 if (!InputEntityIsLocalPlayer(pActInfo))
  107.                         return;
  108.  
  109.                 switch (event)
  110.                 {
  111.                 case eFE_Initialize:
  112.                         m_isPermanent = false;
  113.                         m_isVisible = false;
  114.                         m_showTimeLeft = 0;
  115.                         break;
  116.  
  117.                 case eFE_Activate:
  118.                         if (IsPortActive(pActInfo, INP_Show))
  119.                         {
  120.                                 m_showTimeLeft = GetPortFloat(pActInfo, INP_DisplayTime);
  121.                                 m_isPermanent = m_showTimeLeft == 0;
  122.                                 if (!m_isVisible)
  123.                                 {
  124.                                         pActInfo->pGraph->SetRegularlyUpdated(pActInfo->myID, true);
  125.                                         m_isVisible = true;
  126.                                 }
  127.                                 ActivateOutput(pActInfo, OUT_Show, true);
  128.                         }
  129.  
  130.                         if (IsPortActive(pActInfo, INP_Hide) && m_isVisible)
  131.                         {
  132.                                 m_isVisible = false;
  133.                                 pActInfo->pGraph->SetRegularlyUpdated(pActInfo->myID, false);
  134.                                 ActivateOutput(pActInfo, OUT_Hide, true);
  135.                         }
  136.  
  137.                         if (IsPortActive(pActInfo, INP_DisplayTime))
  138.                         {
  139.                                 m_showTimeLeft = GetPortFloat(pActInfo, INP_DisplayTime);
  140.                                 m_isPermanent = m_showTimeLeft == 0;
  141.                         }
  142.                         break;
  143.  
  144.                 case eFE_Update:
  145.                         if (!m_isPermanent)
  146.                         {
  147.                                 m_showTimeLeft -= gEnv->pTimer->GetFrameTime();
  148.                                 if (m_showTimeLeft <= 0)
  149.                                 {
  150.                                         m_isVisible = false;
  151.                                         pActInfo->pGraph->SetRegularlyUpdated(pActInfo->myID, false);
  152.                                         ActivateOutput(pActInfo, OUT_Hide, true);
  153.                                 }
  154.                         }
  155.  
  156.                         if (CCryActionCVars::Get().cl_DisableHUDText == 0)
  157.                         {
  158.                                 IRenderer* pRenderer = gEnv->pRenderer;
  159.  
  160.                                 // Get correct coordinates
  161.                                 float x = GetPortFloat(pActInfo, INP_X);
  162.                                 float y = GetPortFloat(pActInfo, INP_Y);
  163.  
  164.                                 int aspectRatioFlag = 0;
  165.  
  166.                                 if (x < 1.f || y < 1.f)
  167.                                 {
  168.                                         int screenX, screenY, screenWidth, screenHeight;
  169.                                         pRenderer->GetViewport(&screenX, &screenY, &screenWidth, &screenHeight);
  170.  
  171.                                         if (x < 1.f)
  172.                                                 x *= (float)screenWidth;
  173.                                         if (y < 1.f)
  174.                                                 y *= (float)screenHeight;
  175.  
  176.                                         aspectRatioFlag = pRenderer->IsStereoEnabled() || (screenWidth < screenHeight) ? 0 : eDrawText_800x600;
  177.                                 }
  178.  
  179.                                 SDrawTextInfo ti;
  180.                                 float scale = GetPortFloat(pActInfo, INP_FontSize);
  181.                                 int flags = eDrawText_2D | aspectRatioFlag | eDrawText_FixedSize | (GetPortBool(pActInfo, INP_Centered) ? eDrawText_Center | eDrawText_CenterV : 0);
  182.                                 Vec3 color = GetPortVec3(pActInfo, INP_Color);
  183.  
  184.                                 IRenderAuxText::DrawText(Vec3(x, y, 0.5f), scale, color, flags, GetPortString(pActInfo, INP_Message).c_str());
  185.                         }
  186.                         break;
  187.                 }
  188.         }
  189.  
  190.         virtual void GetMemoryUsage(ICrySizer* s) const
  191.         {
  192.                 s->Add(*this);
  193.         }
  194.  
  195.         bool  m_isVisible;
  196.         bool  m_isPermanent;
  197.         float m_showTimeLeft;
  198.  
  199. };
  200.  
  201. REGISTER_FLOW_NODE("Debug:DisplayMessage", CFlowNode_DisplayDebugMessage);
  202.  
downloadFlowHUDNodes.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