BVB Source Codes

CRYENGINE Show SerializeScriptTableReader.cpp Source code

Return Download CRYENGINE: download SerializeScriptTableReader.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 "SerializeScriptTableReader.h"
  5.  
  6. CSerializeScriptTableReaderImpl::CSerializeScriptTableReaderImpl(SmartScriptTable tbl)
  7. {
  8.         m_nSkip = 0;
  9.         m_tables.push(tbl);
  10. }
  11.  
  12. template<class T, class U>
  13. void CSerializeScriptTableReaderImpl::NumValue(const char* name, U& value)
  14. {
  15.         T temp;
  16.         IScriptTable* pTbl = CurTable();
  17.         if (pTbl)
  18.                 if (pTbl->HaveValue(name))
  19.                         if (!pTbl->GetValue(name, temp))
  20.                         {
  21.                                 Failed();
  22.                                 GameWarning("Failed to read %s", name);
  23.                         }
  24.                         else
  25.                                 value = temp;
  26. }
  27.  
  28. void CSerializeScriptTableReaderImpl::Value(const char* name, EntityId& value)
  29. {
  30.         // values of type entity id might be an unsigned int, or might be a script handle
  31.         IScriptTable* pTbl = CurTable();
  32.         if (pTbl)
  33.                 if (pTbl->HaveValue(name))
  34.                         if (!pTbl->GetValue(name, value))
  35.                         {
  36.                                 ScriptHandle temp;
  37.                                 if (!pTbl->GetValue(name, temp))
  38.                                 {
  39.                                         Failed();
  40.                                         GameWarning("Failed to read %s", name);
  41.                                 }
  42.                                 else
  43.                                         value = (EntityId)temp.n;
  44.                         }
  45. }
  46.  
  47. void CSerializeScriptTableReaderImpl::Value(const char* name, CTimeValue& value)
  48. {
  49.         NumValue<float>(name, value);
  50. }
  51.  
  52. void CSerializeScriptTableReaderImpl::Value(const char* name, Vec2& value)
  53. {
  54.         SmartScriptTable temp;
  55.         IScriptTable* pTbl = CurTable();
  56.         Vec2 tempValue;
  57.         if (pTbl)
  58.                 if (pTbl->HaveValue(name))
  59.                         if (!pTbl->GetValue(name, temp) || !temp->GetValue("x", tempValue.x) || !temp->GetValue("y", tempValue.y))
  60.                         {
  61.                                 Failed();
  62.                                 GameWarning("Failed to read %s", name);
  63.                         }
  64.                         else
  65.                                 value = tempValue;
  66. }
  67.  
  68. void CSerializeScriptTableReaderImpl::Value(const char* name, Quat& value)
  69. {
  70.         SmartScriptTable temp;
  71.         IScriptTable* pTbl = CurTable();
  72.         Quat tempValue;
  73.         if (pTbl)
  74.                 if (pTbl->HaveValue(name))
  75.                         if (!pTbl->GetValue(name, temp) || !temp->GetValue("x", tempValue.v.x) || !temp->GetValue("y", tempValue.v.y) || !temp->GetValue("z", tempValue.v.z) || !temp->GetValue("w", tempValue.w))
  76.                         {
  77.                                 Failed();
  78.                                 GameWarning("Failed to read %s", name);
  79.                         }
  80.                         else
  81.                                 value = tempValue;
  82. }
  83.  
  84. void CSerializeScriptTableReaderImpl::Value(const char* name, ScriptAnyValue& value)
  85. {
  86.         ScriptAnyValue temp;
  87.         IScriptTable* pTbl = CurTable();
  88.         if (pTbl)
  89.                 if (pTbl->GetValueAny(name, temp))
  90.                         if (temp.type != ANY_TNIL)
  91.                                 value = temp;
  92. }
  93.  
  94. void CSerializeScriptTableReaderImpl::Value(const char* name, uint8& value)
  95. {
  96.         NumValue<int>(name, value);
  97. }
  98.  
  99. void CSerializeScriptTableReaderImpl::Value(const char* name, int8& value)
  100. {
  101.         NumValue<int>(name, value);
  102. }
  103.  
  104. void CSerializeScriptTableReaderImpl::Value(const char* name, uint16& value)
  105. {
  106.         NumValue<int>(name, value);
  107. }
  108.  
  109. void CSerializeScriptTableReaderImpl::Value(const char* name, int16& value)
  110. {
  111.         NumValue<int>(name, value);
  112. }
  113.  
  114. void CSerializeScriptTableReaderImpl::Value(const char* name, uint64& value)
  115. {
  116.         NumValue<int>(name, value);
  117. }
  118.  
  119. void CSerializeScriptTableReaderImpl::Value(const char* name, int64& value)
  120. {
  121.         NumValue<int>(name, value);
  122. }
  123.  
  124. void CSerializeScriptTableReaderImpl::Value(const char* name, SSerializeString& str)
  125. {
  126.         const char* tempstr = str.c_str();
  127.         NumValue<const char*>(name, tempstr);
  128. }
  129.  
  130. bool CSerializeScriptTableReaderImpl::BeginGroup(const char* szName)
  131. {
  132.         IScriptTable* pTbl = CurTable();
  133.         if (!pTbl)
  134.                 m_nSkip++;
  135.         else
  136.         {
  137.                 ScriptAnyValue val;
  138.                 pTbl->GetValueAny(szName, val);
  139.                 switch (val.type)
  140.                 {
  141.                 case ANY_TTABLE:
  142.                         m_tables.push(val.table);
  143.                         break;
  144.                 default:
  145.                         GameWarning("Expected %s to be a table, but it wasn't", szName);
  146.                         Failed();
  147.                 case ANY_TNIL:
  148.                         m_nSkip++;
  149.                         break;
  150.                 }
  151.         }
  152.         return true;
  153. }
  154.  
  155. void CSerializeScriptTableReaderImpl::EndGroup()
  156. {
  157.         if (m_nSkip)
  158.                 --m_nSkip;
  159.         else
  160.                 m_tables.pop();
  161. }
  162.  
downloadSerializeScriptTableReader.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