BVB Source Codes

CRYENGINE Show AISignal.cpp Source code

Return Download CRYENGINE: download AISignal.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 "AISignal.h"
  5. #include <CryCore/CryCrc32.h>
  6.  
  7. //====================================================================
  8. // AISIGNAL_EXTRA_DATA
  9. //====================================================================
  10. AISignalExtraData::SignalExtraDataAlloc AISignalExtraData::m_signalExtraDataAlloc;
  11.  
  12. void AISignalExtraData::CleanupPool()
  13. {
  14.         m_signalExtraDataAlloc.FreeMemoryIfEmpty();
  15. }
  16.  
  17. AISignalExtraData::AISignalExtraData()
  18. {
  19.         point.zero();
  20.         point2.zero();
  21.         fValue = 0.0f;
  22.         nID = 0;
  23.         iValue = 0;
  24.         iValue2 = 0;
  25.         sObjectName = NULL;
  26. }
  27.  
  28. AISignalExtraData::~AISignalExtraData()
  29. {
  30.         if (sObjectName)
  31.                 delete[] sObjectName;
  32. }
  33.  
  34. void AISignalExtraData::SetObjectName(const char* objectName)
  35. {
  36.         if (sObjectName)
  37.         {
  38.                 delete[] sObjectName;
  39.                 sObjectName = NULL;
  40.         }
  41.         if (objectName && *objectName)
  42.         {
  43.                 sObjectName = new char[strlen(objectName) + 1];
  44.                 strcpy(sObjectName, objectName);
  45.         }
  46. }
  47.  
  48. void AISignalExtraData::Serialize(TSerialize ser)
  49. {
  50.         ser.Value("point", point);
  51.         ser.Value("point2", point2);
  52.         //      ScriptHandle nID;
  53.         ser.Value("fValue", fValue);
  54.         ser.Value("iValue", iValue);
  55.         ser.Value("iValue2", iValue2);
  56.         string objectNameString(sObjectName);
  57.         ser.Value("sObjectName", objectNameString);
  58.  
  59.         // (MATT) This change in #149616 will probably break save compatibility for Crysis - however, we may find a way to do without these strings anyway.
  60.         // I believe it's the only part of the change that will actually impact the saves - the rest could be left as-is. {2008/01/14:18:14:18}
  61.         string sStringData1(string1);
  62.         ser.Value("string1", sStringData1);
  63.  
  64.         string sStringData2(string2);
  65.         ser.Value("string2", sStringData2);
  66.  
  67.         if (ser.IsReading())
  68.         {
  69.                 SetObjectName(objectNameString.c_str());
  70.                 string1 = sStringData1.c_str();
  71.                 string1 = sStringData2.c_str();
  72.         }
  73. }
  74.  
  75. AISignalExtraData& AISignalExtraData::operator=(const AISignalExtraData& other)
  76. {
  77.         point = other.point;
  78.         point2 = other.point2;
  79.         nID = other.nID;
  80.         fValue = other.fValue;
  81.         iValue = other.iValue;
  82.         iValue2 = other.iValue2;
  83.         string1 = other.string1;
  84.         string2 = other.string2;
  85.         SetObjectName(other.sObjectName);
  86.         return *this;
  87. };
  88.  
  89. void AISignalExtraData::ToScriptTable(SmartScriptTable& table) const
  90. {
  91.         CScriptSetGetChain chain(table);
  92.         {
  93.                 chain.SetValue("id", nID);
  94.                 chain.SetValue("fValue", fValue);
  95.                 chain.SetValue("iValue", iValue);
  96.                 chain.SetValue("iValue2", iValue2);
  97.                 chain.SetValue("string1", string1);
  98.                 chain.SetValue("string2", string2);
  99.  
  100.                 if (sObjectName && sObjectName[0])
  101.                         chain.SetValue("ObjectName", sObjectName);
  102.                 else
  103.                         chain.SetToNull("ObjectName");
  104.  
  105.                 Script::SetCachedVector(point, chain, "point");
  106.                 Script::SetCachedVector(point2, chain, "point2");
  107.         }
  108. }
  109.  
  110. void AISignalExtraData::FromScriptTable(const SmartScriptTable& table)
  111. {
  112.         point.zero();
  113.         point2.zero();
  114.  
  115.         CScriptSetGetChain chain(table);
  116.         {
  117.                 chain.GetValue("id", nID);
  118.                 chain.GetValue("fValue", fValue);
  119.                 chain.GetValue("iValue", iValue);
  120.                 chain.GetValue("iValue2", iValue2);
  121.                 chain.GetValue("string1", string1);
  122.                 chain.GetValue("string2", string2);
  123.                 chain.GetValue("point", point);
  124.                 chain.GetValue("point2", point2);
  125.  
  126.                 const char* sTableObjectName;
  127.                 if (chain.GetValue("ObjectName", sTableObjectName) && sTableObjectName[0])
  128.                         SetObjectName(sTableObjectName);
  129.         }
  130. }
  131.  
  132. //====================================================================
  133. // AISIGNAL Serialize
  134. //====================================================================
  135. void AISIGNAL::Serialize(TSerialize ser)
  136. {
  137.         ser.Value("nSignal", nSignal);
  138.  
  139.         string textString(strText);
  140.         ser.Value("strText", textString);
  141.         ser.Value("senderID", senderID);
  142.  
  143.         if (ser.IsReading())
  144.         {
  145.                 cry_strcpy(strText, textString.c_str());
  146.                 m_nCrcText = CCrc32::Compute(textString);
  147.         }
  148.  
  149.         if (ser.IsReading())
  150.         {
  151.                 if (pEData)
  152.                         delete (AISignalExtraData*) pEData;
  153.                 pEData = new AISignalExtraData;
  154.         }
  155.  
  156.         if (pEData)
  157.                 pEData->Serialize(ser);
  158.         else
  159.         {
  160.                 AISignalExtraData dummy;
  161.                 dummy.Serialize(ser);
  162.         }
  163. }
  164.  
downloadAISignal.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