private static void Serialize(TreeManager.Data data, DataSerializer s) { Singleton<LoadingManager>.instance.m_loadingProfilerSimulation.BeginSerialize(s, "TreeManager"); TreeInstance[] mBuffer = Singleton<TreeManager>.instance.m_trees.m_buffer; int num = 262144; EncodedArray.UShort num1 = EncodedArray.UShort.BeginWrite(s); for (int i = 1; i < num; i++) { num1.Write(mBuffer[i].m_flags); } num1.EndWrite(); try { PrefabCollection<TreeInfo>.BeginSerialize(s); for (int j = 1; j < num; j++) { if (mBuffer[j].m_flags != 0) { PrefabCollection<TreeInfo>.Serialize(mBuffer[j].m_infoIndex); } } } finally { PrefabCollection<TreeInfo>.EndSerialize(s); } EncodedArray.Short num2 = EncodedArray.Short.BeginWrite(s); for (int k = 1; k < num; k++) { if (mBuffer[k].m_flags != 0) { num2.Write(mBuffer[k].m_posX); } } num2.EndWrite(); EncodedArray.Short num3 = EncodedArray.Short.BeginWrite(s); for (int l = 1; l < num; l++) { if (mBuffer[l].m_flags != 0) { num3.Write(mBuffer[l].m_posZ); } } num3.EndWrite(); Singleton<LoadingManager>.instance.m_loadingProfilerSimulation.EndSerialize(s, "TreeManager"); }
private static void Deserialize(TreeManager.Data data, DataSerializer s) { short num; short num1; if (TreeUnlimiter.Mod.DEBUG_LOG_ON == true) { Debug.Log("[TreeUnlimiter::LimitTreeManager::Data:Deserialize()] calling Ensure Init"); } LimitTreeManager.Helper.EnsureInit(1); Singleton<LoadingManager>.instance.m_loadingProfilerSimulation.BeginDeserialize(s, "TreeManager"); TreeManager treeManager = Singleton<TreeManager>.instance; TreeInstance[] mBuffer = treeManager.m_trees.m_buffer; if(TreeUnlimiter.Mod.DEBUG_LOG_ON == true) { Debug.Log("[TreeUnlimiter::LimitTreeManager::Data:Deserialize()] mbuffersize=" + mBuffer.Length.ToString()); } uint[] mTreeGrid = treeManager.m_treeGrid; int num2 = 262144; int length = (int)mTreeGrid.Length; treeManager.m_trees.ClearUnused(); SimulationManager.UpdateMode mUpdateMode = Singleton<SimulationManager>.instance.m_metaData.m_updateMode; if (TreeUnlimiter.Mod.DEBUG_LOG_ON == true) { Debug.LogFormat("[TreeUnlimiter:LimitTreeManager::Data::Deserialize()] mUpdatemode" + mUpdateMode.ToString()); } bool flag = (mUpdateMode == SimulationManager.UpdateMode.NewAsset ? true : mUpdateMode == SimulationManager.UpdateMode.LoadAsset); for (int i = 0; i < length; i++) { mTreeGrid[i] = 0; } EncodedArray.UShort num3 = EncodedArray.UShort.BeginRead(s); for (int j = 1; j < num2; j++) { mBuffer[j].m_flags = num3.Read(); } num3.EndRead(); PrefabCollection<TreeInfo>.BeginDeserialize(s); for (int k = 1; k < num2; k++) { if (mBuffer[k].m_flags != 0) { mBuffer[k].m_infoIndex = (ushort)PrefabCollection<TreeInfo>.Deserialize(); } } PrefabCollection<TreeInfo>.EndDeserialize(s); EncodedArray.Short num4 = EncodedArray.Short.BeginRead(s); for (int l = 1; l < num2; l++) { if (mBuffer[l].m_flags == 0) { num = 0; } else { num = num4.Read(); } mBuffer[l].m_posX = num; } num4.EndRead(); EncodedArray.Short num5 = EncodedArray.Short.BeginRead(s); for (int m = 1; m < num2; m++) { if (mBuffer[m].m_flags == 0) { num1 = 0; } else { num1 = num5.Read(); } mBuffer[m].m_posZ = num1; } num5.EndRead(); for (int n = 1; n < num2; n++) { mBuffer[n].m_nextGridTree = 0; mBuffer[n].m_posY = 0; } if (LimitTreeManager.Helper.UseModifiedTreeCap) { if (TreeUnlimiter.Mod.DEBUG_LOG_ON == true) { Debug.LogFormat("[TreeUnlimiter::LimitTreeManager::Data:Deserialize()] Using ModifiedTreeCap - Calling Custom Deserializer."); } LimitTreeManager.CustomSerializer.Deserialize(); } treeManager.m_trees.ClearUnused(); for (int o = 0; o < LimitTreeManager.Helper.TreeLimit; o++) { if (mBuffer[o].m_flags == 0) { treeManager.m_trees.ReleaseItem((uint)o); } else { LimitTreeManager.InitializeTree(treeManager, (uint)o, ref mBuffer[o], flag); } } Singleton<LoadingManager>.instance.m_loadingProfilerSimulation.EndDeserialize(s, "TreeManager"); }