示例#1
0
    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);
        }
    }