BVB Source Codes

CRYENGINE Show EnvironmentPreset.h Source code

Return Download CRYENGINE: download EnvironmentPreset.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef _environment_preset_h_
  4. #define _environment_preset_h_
  5. #pragma once
  6.  
  7. #include <CryMath/Bezier.h>
  8.  
  9. class CBezierSpline
  10. {
  11. public:
  12.         CBezierSpline();
  13.         ~CBezierSpline();
  14.  
  15.         void              Init(float fDefaultValue);
  16.         float             Evaluate(float t) const;
  17.  
  18.         void              SetKeys(const SBezierKey* keysArray, unsigned int keysArraySize) { m_keys.resize(keysArraySize); memcpy(&m_keys[0], keysArray, keysArraySize * sizeof(SBezierKey)); }
  19.         void              GetKeys(SBezierKey* keys) const                                  { memcpy(keys, &m_keys[0], m_keys.size() * sizeof(SBezierKey)); }
  20.  
  21.         void              InsertKey(SAnimTime time, float value);
  22.         void              UpdateKeyForTime(float fTime, float value);
  23.  
  24.         void              Resize(size_t nSize)        { m_keys.resize(nSize); }
  25.  
  26.         size_t            GetKeyCount() const         { return m_keys.size(); }
  27.         const SBezierKey& GetKey(size_t nIndex) const { return m_keys[nIndex]; }
  28.         SBezierKey&       GetKey(size_t nIndex)       { return m_keys[nIndex]; }
  29.  
  30.         void              Serialize(Serialization::IArchive& ar);
  31. private:
  32.         typedef std::vector<SBezierKey> TKeyContainer;
  33.         TKeyContainer m_keys;
  34.  
  35.         struct SCompKeyTime
  36.         {
  37.                 bool operator()(const TKeyContainer::value_type& l, const TKeyContainer::value_type& r) const { return l.m_time < r.m_time; }
  38.                 bool operator()(SAnimTime l, const TKeyContainer::value_type& r) const                        { return l < r.m_time; }
  39.                 bool operator()(const TKeyContainer::value_type& l, SAnimTime r) const                        { return l.m_time < r; }
  40.         };
  41. };
  42.  
  43. //////////////////////////////////////////////////////////////////////////
  44. class CTimeOfDayVariable
  45. {
  46. public:
  47.         CTimeOfDayVariable();
  48.         ~CTimeOfDayVariable();
  49.  
  50.         void                          Init(const char* group, const char* displayName, const char* name, ITimeOfDay::ETimeOfDayParamID nParamId, ITimeOfDay::EVariableType type, float defVal0, float defVal1, float defVal2);
  51.         void                          Update(float time);
  52.  
  53.         Vec3                          GetInterpolatedAt(float t) const;
  54.  
  55.         ITimeOfDay::ETimeOfDayParamID GetId() const          { return m_id; }
  56.         ITimeOfDay::EVariableType     GetType() const        { return m_type; }
  57.         const char*                   GetName() const        { return m_name; }
  58.         const char*                   GetDisplayName() const { return m_displayName; }
  59.         const char*                   GetGroupName() const   { return m_group; }
  60.         const Vec3                    GetValue() const       { return m_value; }
  61.  
  62.         float                         GetMinValue() const    { return m_minValue; }
  63.         float                         GetMaxValue() const    { return m_maxValue; }
  64.  
  65.         const CBezierSpline*          GetSpline(int nIndex) const
  66.         {
  67.                 if (nIndex >= 0 && nIndex < Vec3::component_count)
  68.                         return &m_spline[nIndex];
  69.                 else
  70.                         return NULL;
  71.         }
  72.  
  73.         CBezierSpline* GetSpline(int nIndex)
  74.         {
  75.                 if (nIndex >= 0 && nIndex < Vec3::component_count)
  76.                         return &m_spline[nIndex];
  77.                 else
  78.                         return NULL;
  79.         }
  80.  
  81.         size_t GetSplineKeyCount(int nSpline) const;
  82.         bool   GetSplineKeys(int nSpline, SBezierKey* keysArray, unsigned int keysArraySize) const;
  83.         bool   SetSplineKeys(int nSpline, const SBezierKey* keysArray, unsigned int keysArraySize);
  84.         bool   UpdateSplineKeyForTime(int nSpline, float fTime, float newKey);
  85.  
  86.         void   Serialize(Serialization::IArchive& ar);
  87. private:
  88.         ITimeOfDay::ETimeOfDayParamID m_id;
  89.         ITimeOfDay::EVariableType     m_type;
  90.  
  91.         const char*                   m_name;        // Variable name.
  92.         const char*                   m_displayName; // Variable user readable name.
  93.         const char*                   m_group;       // Group name.
  94.  
  95.         float                         m_minValue;
  96.         float                         m_maxValue;
  97.  
  98.         Vec3                          m_value;
  99.         CBezierSpline                 m_spline[Vec3::component_count]; //spline for each component in m_value
  100. };
  101.  
  102. //////////////////////////////////////////////////////////////////////////
  103. class CEnvironmentPreset
  104. {
  105. public:
  106.         CEnvironmentPreset();
  107.         ~CEnvironmentPreset();
  108.  
  109.         void                      ResetVariables();
  110.         void                      Update(float t);
  111.  
  112.         const CTimeOfDayVariable* GetVar(ITimeOfDay::ETimeOfDayParamID id) const { return &m_vars[id]; }
  113.         CTimeOfDayVariable*       GetVar(ITimeOfDay::ETimeOfDayParamID id)       { return &m_vars[id]; }
  114.         CTimeOfDayVariable*       GetVar(const char* varName);
  115.         bool                      InterpolateVarInRange(ITimeOfDay::ETimeOfDayParamID id, float fMin, float fMax, unsigned int nCount, Vec3* resultArray) const;
  116.  
  117.         void                      Serialize(Serialization::IArchive& ar);
  118.  
  119.         static float              GetAnimTimeSecondsIn24h();
  120. private:
  121.         void                      AddVar(const char* group, const char* displayName, const char* name, ITimeOfDay::ETimeOfDayParamID nParamId, ITimeOfDay::EVariableType type, float defVal0, float defVal1, float defVal2);
  122.  
  123.         CTimeOfDayVariable m_vars[ITimeOfDay::PARAM_TOTAL];
  124. };
  125.  
  126. #endif //_environment_preset_h_
  127.  
downloadEnvironmentPreset.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