BVB Source Codes

CRYENGINE Show ManualFrameStep.h Source code

Return Download CRYENGINE: download ManualFrameStep.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #pragma once
  4.  
  5. #if !defined(_RELEASE)
  6.         #define MANUAL_FRAME_STEP_ENABLED 1
  7. #else
  8.         #define MANUAL_FRAME_STEP_ENABLED 0
  9. #endif
  10.  
  11. #include <CryInput/IInput.h>
  12. #include <CryNetwork/NetHelpers.h>
  13.  
  14. enum class EManualFrameStepResult
  15. {
  16.         Continue,
  17.         Block
  18. };
  19.  
  20. #if MANUAL_FRAME_STEP_ENABLED
  21.  
  22. class CManualFrameStepController
  23.         : public CNetMessageSinkHelper<CManualFrameStepController, INetMessageSink>
  24.           , public IInputEventListener
  25. {
  26. private:
  27.         enum : uint8
  28.         {
  29.                 kEnableMask = 0,
  30.                 kDisableMask = (uint8) ~0
  31.         };
  32.  
  33.         struct SCVars
  34.         {
  35.                 static void Register();
  36.                 static void Unregister();
  37.  
  38.                 static float manualFrameStepFrequency;
  39.         };
  40.  
  41.         struct SNetMessage : public ISerializable
  42.         {
  43.                 SNetMessage()
  44.                         : numFrames(0)
  45.                 {
  46.                 }
  47.  
  48.                 SNetMessage(const uint8 _numFrames)
  49.                         : numFrames(_numFrames)
  50.                 {
  51.                 }
  52.  
  53.                 // ISerializable
  54.                 virtual void SerializeWith(TSerialize ser) override
  55.                 {
  56.                         ser.Value("numFrames", numFrames, 'ui8');
  57.                 }
  58.                 //~ISerializable
  59.  
  60.                 uint8 numFrames;
  61.         };
  62.  
  63. public:
  64.         CManualFrameStepController();
  65.         ~CManualFrameStepController();
  66.  
  67.         EManualFrameStepResult Update();
  68.  
  69.         // INetMessageSink
  70.         virtual void DefineProtocol(IProtocolBuilder* pBuilder) override;
  71.         // ~INetMessageSink
  72.  
  73.         NET_DECLARE_SIMPLE_ATSYNC_MESSAGE(OnNetworkMessage, SNetMessage);
  74.  
  75. private:
  76.         bool IsEnabled() const;
  77.         void Enable(bool bEnable);
  78.         void GenerateRequest(const uint8 numFrames);
  79.         void ProcessCommand(const uint8 numFrames);
  80.         void NetSyncClients(const SNetMessage& netMessage);
  81.         void NetRequestStepToServer(const SNetMessage& netMessage);
  82.  
  83.         // IInputEventListener
  84.         virtual bool OnInputEvent(const SInputEvent& inputEvent) override;
  85.         // ~IInputEventListener
  86.  
  87.         static void GetFramesFolder(stack_string& outFolder);
  88.         static void DisplayDebugInfo();
  89.  
  90. private:
  91.         int32  m_framesLeft;
  92.         uint32 m_framesGenerated;
  93.         float  m_previousFixedStep;
  94.         float  m_heldTimer;
  95.         bool   m_pendingRequest;
  96.         bool   m_previousStepSmoothing;
  97. };
  98.  
  99. #else
  100. class CManualFrameStepController
  101. {
  102. public:
  103.         inline EManualFrameStepResult Update()                                   { return EManualFrameStepResult::Continue; }
  104.         void                          DefineProtocol(IProtocolBuilder* pBuilder) {};
  105. };
  106. #endif
  107.  
downloadManualFrameStep.h 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