private unsafe void OnSimRegistered(int handle) { if ((UnityEngine.Object) this != (UnityEngine.Object)null && simHandle == -2) { simHandle = handle; int handleIndex = Sim.GetHandleIndex(handle); float temperature = Game.Instance.simData.elementChunks[handleIndex].temperature; if (temperature <= 0f) { KCrashReporter.Assert(false, "Bad temperature"); } handleInstanceMap[simHandle] = this; if (pendingEnergyModifications > 0f) { ModifyEnergy(pendingEnergyModifications); pendingEnergyModifications = 0f; } if (onSimRegistered != null) { onSimRegistered(this); } } else { SimMessages.RemoveElementChunk(handle, -1); } }
protected unsafe void SimUnregister() { if (simHandle != -1 && !KMonoBehaviour.isLoadingScene) { PrimaryElement component = GetComponent <PrimaryElement>(); if (Sim.IsValidHandle(simHandle)) { int handleIndex = Sim.GetHandleIndex(simHandle); component.InternalTemperature = Game.Instance.simData.elementChunks[handleIndex].temperature; SimMessages.RemoveElementChunk(simHandle, -1); handleInstanceMap.Remove(simHandle); } simHandle = -1; } }