Ticket #3310: ai_pathfinder_serialize.patch
File ai_pathfinder_serialize.patch, 2.6 KB (added by , 9 years ago) |
---|
-
source/simulation2/components/CCmpAIManager.cpp
496 496 ScriptInterface::ToJSVal(cx, &m_TerritoryMapVal, territoryMap); 497 497 498 498 m_PassabilityMap = passabilityMap; 499 m_PassClasses = passClassMasks; 499 500 m_LongPathfinder.Reload(passClassMasks, &m_PassabilityMap); 500 501 501 502 if (m_HasSharedComponent) … … 655 656 serializer.ScriptVal("data", &m_Players[i]->m_Obj); 656 657 } 657 658 } 659 660 // AI pathfinder 661 SerializeMap<SerializeString, SerializeU16_Unbounded>()(serializer, "pass classes", m_PassClasses); 662 serializer.NumberU16_Unbounded("pathfinder grid w", m_PassabilityMap.m_W); 663 serializer.NumberU16_Unbounded("pathfinder grid h", m_PassabilityMap.m_H); 664 serializer.RawBytes("pathfinder grid data", (const u8*)m_PassabilityMap.m_Data, 665 m_PassabilityMap.m_W*m_PassabilityMap.m_H*sizeof(NavcellData)); 658 666 } 659 667 660 668 void Deserialize(std::istream& stream, u32 numAis) … … 735 743 deserializer.ScriptVal("data", &m_Players.back()->m_Obj); 736 744 } 737 745 } 746 747 // AI pathfinder 748 SerializeMap<SerializeString, SerializeU16_Unbounded>()(deserializer, "pass classes", m_PassClasses); 749 u16 mapW, mapH; 750 deserializer.NumberU16_Unbounded("pathfinder grid w", mapW); 751 deserializer.NumberU16_Unbounded("pathfinder grid h", mapH); 752 m_PassabilityMap = Grid<NavcellData>(mapW, mapH); 753 deserializer.RawBytes("pathfinder grid data", (u8*)m_PassabilityMap.m_Data, mapW*mapH*sizeof(NavcellData)); 754 m_LongPathfinder.Reload(m_PassClasses, &m_PassabilityMap); 738 755 } 739 756 740 757 int getPlayerSize() … … 849 866 Grid<u8> m_TerritoryMap; 850 867 JS::PersistentRootedValue m_TerritoryMapVal; 851 868 869 std::map<std::string, pass_class_t> m_PassClasses; 852 870 LongPathfinder m_LongPathfinder; 853 871 854 872 bool m_CommandsComputed; -
source/simulation2/serialization/SerializeTemplates.h
203 203 } 204 204 }; 205 205 206 struct SerializeString 207 { 208 void operator()(ISerializer& serialize, const char* name, const std::string& value) 209 { 210 serialize.StringASCII(name, value, 0, UINT32_MAX); 211 } 212 213 void operator()(IDeserializer& deserialize, const char* name, std::string& value) 214 { 215 deserialize.StringASCII(name, value, 0, UINT32_MAX); 216 } 217 }; 218 206 219 struct SerializeWaypoint 207 220 { 208 221 void operator()(ISerializer& serialize, const char* UNUSED(name), const Waypoint& value)