BVB Source Codes

CRYENGINE Show View.h Source code

Return Download CRYENGINE: download View.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. /*************************************************************************
  4.    -------------------------------------------------------------------------
  5.    $Id$
  6.    $DateTime$
  7.    Description: View System interfaces.
  8.  
  9.    -------------------------------------------------------------------------
  10.    History:
  11.    - 24:9:2004 : Created by Filippo De Luca
  12.  
  13. *************************************************************************/
  14. #ifndef __VIEW_H__
  15. #define __VIEW_H__
  16.  
  17. #if _MSC_VER > 1000
  18.         #pragma once
  19. #endif
  20.  
  21. #include "IViewSystem.h"
  22. #include <CrySystem/VR/IHMDDevice.h>
  23. #include <CrySystem/VR/IHMDManager.h>
  24.  
  25. class CGameObject;
  26.  
  27. class CView : public IView, public IEntityEventListener, public IHmdDevice::IAsyncCameraCallback
  28. {
  29. public:
  30.  
  31.         explicit CView(ISystem* const pSystem);
  32.         virtual ~CView();
  33.  
  34.         //shaking
  35.         struct SShake
  36.         {
  37.                 bool      updating;
  38.                 bool      flip;
  39.                 bool      doFlip;
  40.                 bool      groundOnly;
  41.                 bool      permanent;
  42.                 bool      interrupted; // when forcefully stopped
  43.                 bool      isSmooth;
  44.  
  45.                 int const ID;
  46.  
  47.                 float     nextShake;
  48.                 float     timeDone;
  49.                 float     sustainDuration;
  50.                 float     fadeInDuration;
  51.                 float     fadeOutDuration;
  52.  
  53.                 float     frequency;
  54.                 float     ratio;
  55.  
  56.                 float     randomness;
  57.  
  58.                 Quat      startShake;
  59.                 Quat      startShakeSpeed;
  60.                 Vec3      startShakeVector;
  61.                 Vec3      startShakeVectorSpeed;
  62.  
  63.                 Quat      goalShake;
  64.                 Quat      goalShakeSpeed;
  65.                 Vec3      goalShakeVector;
  66.                 Vec3      goalShakeVectorSpeed;
  67.  
  68.                 Ang3      amount;
  69.                 Vec3      amountVector;
  70.  
  71.                 Quat      shakeQuat;
  72.                 Vec3      shakeVector;
  73.  
  74.                 explicit SShake(int const shakeID)
  75.                         : updating(false)
  76.                         , flip(false)
  77.                         , doFlip(false)
  78.                         , groundOnly(false)
  79.                         , permanent(false)
  80.                         , interrupted(false)
  81.                         , isSmooth(false)
  82.                         , ID(shakeID)
  83.                         , nextShake(0.0f)
  84.                         , timeDone(0.0f)
  85.                         , sustainDuration(0.0f)
  86.                         , fadeInDuration(0.0f)
  87.                         , fadeOutDuration(0.0f)
  88.                         , frequency(0.0f)
  89.                         , ratio(0.0f)
  90.                         , randomness(0.5f)
  91.                         , startShake(IDENTITY)
  92.                         , startShakeSpeed(IDENTITY)
  93.                         , startShakeVector(ZERO)
  94.                         , startShakeVectorSpeed(ZERO)
  95.                         , goalShake(IDENTITY)
  96.                         , goalShakeSpeed(IDENTITY)
  97.                         , goalShakeVector(ZERO)
  98.                         , goalShakeVectorSpeed(ZERO)
  99.                         , amount(ZERO)
  100.                         , amountVector(ZERO)
  101.                         , shakeQuat(IDENTITY)
  102.                         , shakeVector(ZERO)
  103.                 {}
  104.  
  105.                 void GetMemoryUsage(ICrySizer* pSizer) const { /*nothing*/ }
  106.         };
  107.  
  108.         // IView
  109.         virtual void               Release();
  110.         virtual void               Update(float frameTime, bool isActive);
  111.         virtual void               ProcessShaking(float frameTime);
  112.         virtual void               ProcessShake(SShake* pShake, float frameTime);
  113.         virtual void               ResetShaking();
  114.         virtual void               ResetBlending() { m_viewParams.ResetBlending(); }
  115.         //FIXME: keep CGameObject *  or use IGameObject *?
  116.         virtual void               LinkTo(IGameObject* follow);
  117.         virtual void               LinkTo(IEntity* follow);
  118.         virtual EntityId           GetLinkedId()                         { return m_linkedTo; };
  119.         virtual void               SetCurrentParams(SViewParams& params) { m_viewParams = params; };
  120.         virtual const SViewParams* GetCurrentParams()                    { return &m_viewParams; }
  121.         virtual void               SetViewShake(Ang3 shakeAngle, Vec3 shakeShift, float duration, float frequency, float randomness, int shakeID, bool bFlipVec = true, bool bUpdateOnly = false, bool bGroundOnly = false);
  122.         virtual void               SetViewShakeEx(const SShakeParams& params);
  123.         virtual void               StopShake(int shakeID);
  124.         virtual void               SetFrameAdditiveCameraAngles(const Ang3& addFrameAngles);
  125.         virtual void               SetScale(const float scale);
  126.         virtual void               SetZoomedScale(const float scale);
  127.         virtual void               SetActive(bool const bActive);
  128.         // ~IView
  129.  
  130.         // IEntityEventListener
  131.         virtual void OnEntityEvent(IEntity* pEntity, SEntityEvent& event);
  132.         // ~IEntityEventListener
  133.  
  134.         void     Serialize(TSerialize ser);
  135.         void     PostSerialize();
  136.         CCamera& GetCamera() { return m_camera; };
  137.         void     UpdateAudioListener(Matrix34 const& rMatrix);
  138.  
  139.         void     GetMemoryUsage(ICrySizer* s) const;
  140.  
  141. protected:
  142.  
  143.         CGameObject* GetLinkedGameObject();
  144.         IEntity*     GetLinkedEntity();
  145.         void         ProcessShakeNormal(SShake* pShake, float frameTime);
  146.         void         ProcessShakeNormal_FinalDamping(SShake* pShake, float frameTime);
  147.         void         ProcessShakeNormal_CalcRatio(SShake* pShake, float frameTime, float endSustain);
  148.         void         ProcessShakeNormal_DoShaking(SShake* pShake, float frameTime);
  149.  
  150.         void         ProcessShakeSmooth(SShake* pShake, float frameTime);
  151.         void         ProcessShakeSmooth_DoShaking(SShake* pShake, float frameTime);
  152.  
  153.         void         ApplyFrameAdditiveAngles(Quat& cameraOrientation);
  154.  
  155.         const float  GetScale();
  156.  
  157.         // IAsyncCameraCallback
  158.         virtual bool OnAsyncCameraCallback(const HmdTrackingState& state, IHmdDevice::AsyncCameraContext& context);
  159.         // ~IAsyncCameraCallback
  160.  
  161. private:
  162.  
  163.         void GetRandomQuat(Quat& quat, SShake* pShake);
  164.         void GetRandomVector(Vec3& vec3, SShake* pShake);
  165.         void CubeInterpolateQuat(float t, SShake* pShake);
  166.         void CubeInterpolateVector(float t, SShake* pShake);
  167.         void CreateAudioListener();
  168.  
  169. protected:
  170.  
  171.         EntityId            m_linkedTo;
  172.  
  173.         SViewParams         m_viewParams;
  174.         CCamera             m_camera;
  175.  
  176.         ISystem* const      m_pSystem;
  177.  
  178.         std::vector<SShake> m_shakes;
  179.  
  180.         IEntity*            m_pAudioListener;
  181.         Ang3                m_frameAdditiveAngles; // Used mainly for cinematics, where the game can slightly override camera orientation
  182.  
  183.         float               m_scale;
  184.         float               m_zoomedScale;
  185. };
  186.  
  187. #endif //__VIEW_H__
  188.  
downloadView.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