ezEngine  Milestone 7
CVar_inl.h
1 #pragma once
2 
3 #include <Foundation/Configuration/CVar.h>
4 
5 template<typename Type, ezCVarType::Enum CVarType>
6 ezTypedCVar<Type, CVarType>::ezTypedCVar(const char* szName, const Type& Value, ezBitflags<ezCVarFlags> Flags, const char* szDescription)
7  : ezCVar(szName, Flags, szDescription)
8 {
9  for (ezUInt32 i = 0; i < ezCVarValue::ENUM_COUNT; ++i)
10  m_Values[i] = Value;
11 }
12 
13 template<typename Type, ezCVarType::Enum CVarType>
14 ezTypedCVar<Type, CVarType>::operator const Type&() const { return (m_Values[ezCVarValue::Current]); }
15 
16 template<typename Type, ezCVarType::Enum CVarType>
18 {
19  return CVarType;
20 }
21 
22 template<typename Type, ezCVarType::Enum CVarType>
24 {
25  if (m_Values[ezCVarValue::Current] == m_Values[ezCVarValue::Restart])
26  return;
27 
28  // this will NOT trigger a 'restart value changed' event
29  m_Values[ezCVarValue::Current] = m_Values[ezCVarValue::Restart];
30 
31  CVarEvent e(this);
33  m_CVarEvents.Broadcast(e);
34 
35  // broadcast the same to the 'all cvars' event handlers
36  s_AllCVarEvents.Broadcast(e);
37 }
38 
39 template<typename Type, ezCVarType::Enum CVarType>
41 {
42  return (m_Values[val]);
43 }
44 
45 template<typename Type, ezCVarType::Enum CVarType>
47 {
48  CVarEvent e(this);
49 
50  if (GetFlags().IsAnySet(ezCVarFlags::RequiresRestart))
51  {
52  if (value == m_Values[ezCVarValue::Restart]) // no change
53  return;
54 
56  }
57  else
58  {
59  if (m_Values[ezCVarValue::Current] == value) // no change
60  return;
61 
62  m_Values[ezCVarValue::Current] = value;
64  }
65 
66  m_Values[ezCVarValue::Restart] = value;
67 
68  m_CVarEvents.Broadcast(e);
69 
70  // broadcast the same to the 'all cvars' event handlers
71  s_AllCVarEvents.Broadcast(e);
72 }
73