BVB Source Codes

CRYENGINE Show FlowVehicleCamera.cpp Source code

Return Download CRYENGINE: download FlowVehicleCamera.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 "FlowVehicleBase.h"
  5. #include "VehicleSystem/Vehicle.h"
  6. /*
  7.  * helpers
  8.  */
  9.  
  10. bool parseSeatViewString(const string seatViewPortString, string* seatName, string* viewName, int* viewId)
  11. {
  12.         if (seatViewPortString.empty())
  13.         {
  14.                 return false;
  15.         }
  16.  
  17.         // string should be of form: 'seatName:viewName (viewId)'
  18.         string::size_type sep = seatViewPortString.find(':');
  19.         string::size_type par = seatViewPortString.rfind('(');
  20.         if (!(sep > 0 && par > sep + 1 && seatViewPortString.length() > par + 2))
  21.         {
  22.                 return false;
  23.         }
  24.  
  25.         *seatName = seatViewPortString.substr(0, sep);
  26.         *viewName = seatViewPortString.substr(sep + 1, par - 2 - sep);
  27.         *viewId = atoi(seatViewPortString.substr(par + 1, seatViewPortString.length() - par - 2));
  28.  
  29.         return true;
  30. }
  31.  
  32. /*
  33.  * CFlowVehicleChangeView
  34.  */
  35.  
  36. class CFlowVehicleChangeView : public CFlowVehicleBase
  37. {
  38.         enum EInputs
  39.         {
  40.                 eIn_Trigger,
  41.                 eIn_SeatView,
  42.         };
  43.  
  44.         enum EOutputs
  45.         {
  46.                 eOut_Success,
  47.         };
  48.  
  49. public:
  50.  
  51.         CFlowVehicleChangeView(SActivationInfo* pActInfo)
  52.         {
  53.                 Init(pActInfo);
  54.         }
  55.         ~CFlowVehicleChangeView() { Delete(); }
  56.  
  57.         IFlowNodePtr Clone(SActivationInfo* pActInfo)
  58.         {
  59.                 IFlowNode* pNode = new CFlowVehicleChangeView(pActInfo);
  60.                 return pNode;
  61.         }
  62.  
  63.         void GetConfiguration(SFlowNodeConfig& nodeConfig)
  64.         {
  65.                 CFlowVehicleBase::GetConfiguration(nodeConfig);
  66.  
  67.                 static const SInputPortConfig pInConfig[] =
  68.                 {
  69.                         InputPortConfig_Void("Trigger",     _HELP("Triggers the view change")),
  70.                         InputPortConfig<string>("SeatView", _HELP("Seat View to be changed"),  _HELP("Seat View"),_UICONFIG("dt=vehicleSeatViews, ref_entity=entityId")),
  71.                         { 0 }
  72.                 };
  73.  
  74.                 static const SOutputPortConfig pOutConfig[] =
  75.                 {
  76.                         OutputPortConfig<bool>("Success", _HELP("Activated when the view is change is successful or fails")),
  77.                         { 0 }
  78.                 };
  79.  
  80.                 nodeConfig.sDescription = _HELP("Set vehicle view per seat");
  81.                 nodeConfig.nFlags |= EFLN_TARGET_ENTITY;
  82.                 nodeConfig.pInputPorts = pInConfig;
  83.                 nodeConfig.pOutputPorts = pOutConfig;
  84.                 nodeConfig.SetCategory(EFLN_APPROVED);
  85.         }
  86.  
  87.         void ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  88.         {
  89.                 CFlowVehicleBase::ProcessEvent(event, pActInfo); // handles eFE_SetEntityId
  90.  
  91.                 if (event == eFE_Activate)
  92.                 {
  93.                         bool success = false;
  94.  
  95.                         CVehicle* pVehicle = static_cast<CVehicle*>(GetVehicle());
  96.                         if (pVehicle)
  97.                         {
  98.                                 const string seatViewPortString = GetPortString(pActInfo, eIn_SeatView);
  99.                                 string seatName, viewName;
  100.                                 int viewId;
  101.                                 if (parseSeatViewString(seatViewPortString, &seatName, &viewName, &viewId))
  102.                                 {
  103.                                         IVehicleSeat* pSeat = pVehicle->GetSeatById(pVehicle->GetSeatId(seatName));
  104.                                         if (pSeat)
  105.                                         {
  106.                                                 success = pSeat->SetView(viewId);
  107.                                         }
  108.                                 }
  109.                         }
  110.  
  111.                         ActivateOutput(pActInfo, eOut_Success, success);
  112.                 }
  113.         }
  114.  
  115.         virtual void GetMemoryUsage(ICrySizer* s) const
  116.         {
  117.                 s->Add(*this);
  118.         }
  119.  
  120. };
  121.  
  122. /*
  123.  * CFlowVehicleView
  124.  */
  125.  
  126. class CFlowVehicleView : public CFlowVehicleBase
  127. {
  128.         enum EInputs
  129.         {
  130.                 eIn_Enable,
  131.                 eIn_Disable,
  132.                 eIn_SeatView,
  133.         };
  134.  
  135.         enum EOutputs
  136.         {
  137.                 eOut_Enabled,
  138.                 eOut_Disabled,
  139.         };
  140.  
  141. public:
  142.  
  143.         CFlowVehicleView(SActivationInfo* pActInfo)
  144.         {
  145.                 Init(pActInfo);
  146.         }
  147.         ~CFlowVehicleView() { Delete(); }
  148.  
  149.         IFlowNodePtr Clone(SActivationInfo* pActInfo)
  150.         {
  151.                 IFlowNode* pNode = new CFlowVehicleView(pActInfo);
  152.                 return pNode;
  153.         }
  154.  
  155.         virtual void GetConfiguration(SFlowNodeConfig& config)
  156.         {
  157.                 static const SInputPortConfig pInConfig[] =
  158.                 {
  159.                         InputPortConfig_Void("Enable",      _HELP("Enable custom view")),
  160.                         InputPortConfig_Void("Disable",     _HELP("Disable custom view")),
  161.                         InputPortConfig<string>("SeatView", _HELP("Seat View to be enabled/disabled"),0,  _UICONFIG("dt=vehicleSeatViews, ref_entity=entityId")),
  162.                         { 0 }
  163.                 };
  164.  
  165.                 static const SOutputPortConfig pOutConfig[] =
  166.                 {
  167.                         OutputPortConfig_Void("Enabled",  _HELP("Activated when the view is enabled successfully")),
  168.                         OutputPortConfig_Void("Disabled", _HELP("Activated when the view is disabled successfully")),
  169.                         { 0 }
  170.                 };
  171.  
  172.                 config.sDescription = _HELP("Enables/Disables Views per Seat");
  173.                 config.pInputPorts = pInConfig;
  174.                 config.pOutputPorts = pOutConfig;
  175.                 config.nFlags |= EFLN_TARGET_ENTITY;
  176.                 config.SetCategory(EFLN_APPROVED);
  177.         }
  178.  
  179.         virtual void ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
  180.         {
  181.                 CFlowVehicleBase::ProcessEvent(event, pActInfo); // handles eFE_SetEntityId
  182.  
  183.                 if (event == eFE_Activate)
  184.                 {
  185.                         CVehicle* pVehicle = static_cast<CVehicle*>(GetVehicle());
  186.                         if (pVehicle)
  187.                         {
  188.                                 const string seatViewPortString = GetPortString(pActInfo, eIn_SeatView);
  189.                                 string seatName, viewName;
  190.                                 int viewId;
  191.                                 if (parseSeatViewString(seatViewPortString, &seatName, &viewName, &viewId))
  192.                                 {
  193.                                         IVehicleSeat* pSeat = pVehicle->GetSeatById(pVehicle->GetSeatId(seatName));
  194.                                         IVehicleView* pView = pSeat ? pSeat->GetView(viewId) : NULL;
  195.                                         if (pView)
  196.                                         {
  197.                                                 if (IsPortActive(pActInfo, eIn_Enable))
  198.                                                 {
  199.                                                         pView->SetEnabled(true);
  200.                                                         ActivateOutput(pActInfo, eOut_Enabled, true);
  201.                                                 }
  202.                                                 if (IsPortActive(pActInfo, eIn_Disable))
  203.                                                 {
  204.                                                         pView->SetEnabled(false);
  205.                                                         ActivateOutput(pActInfo, eOut_Disabled, true);
  206.                                                 }
  207.                                         }
  208.                                 }
  209.                         }
  210.                 }
  211.         }
  212.  
  213.         virtual void GetMemoryUsage(ICrySizer* s) const
  214.         {
  215.                 s->Add(*this);
  216.         }
  217. };
  218.  
  219. REGISTER_FLOW_NODE("Vehicle:ChangeView", CFlowVehicleChangeView);
  220. REGISTER_FLOW_NODE("Vehicle:View", CFlowVehicleView);
  221.  
downloadFlowVehicleCamera.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