public unsafe void Sim200ms(float dt) { IntPtr value = ConduitTemperatureManager_Update(dt, (IntPtr)(void *)Game.Instance.simData.buildingTemperatures); ConduitTemperatureUpdateData *ptr = (ConduitTemperatureUpdateData *)(void *)value; int numEntries = ptr->numEntries; if (numEntries > 0) { Marshal.Copy((IntPtr)(void *)ptr->temperatures, temperatures, 0, numEntries); } for (int i = 0; i < ptr->numFrozenHandles; i++) { int h = ptr->frozenHandles[i]; int handleIndex = Sim.GetHandleIndex(h); ConduitInfo conduitInfo = this.conduitInfo[handleIndex]; ConduitFlow flowManager = Conduit.GetFlowManager(conduitInfo.type); flowManager.FreezeConduitContents(conduitInfo.idx); } for (int j = 0; j < ptr->numMeltedHandles; j++) { int h2 = ptr->meltedHandles[j]; int handleIndex2 = Sim.GetHandleIndex(h2); ConduitInfo conduitInfo2 = this.conduitInfo[handleIndex2]; ConduitFlow flowManager2 = Conduit.GetFlowManager(conduitInfo2.type); flowManager2.MeltConduitContents(conduitInfo2.idx); } }