コード例 #1
0
        // Change anys door blocks nearby into air forms
        static void Door(Level lvl, ref PhysInfo C)
        {
            ushort  x = C.X, y = C.Y, z = C.Z;
            BlockID block   = (BlockID)(C.Data.Value2 | (C.Data.ExtBlock << Block.ExtendedShift));
            bool    instant = block == Block.Door_Air || block == Block.Door_AirActivatable;

            ActivateablePhysics.DoDoors(lvl, (ushort)(x + 1), y, z, instant);
            ActivateablePhysics.DoDoors(lvl, (ushort)(x - 1), y, z, instant);
            ActivateablePhysics.DoDoors(lvl, x, y, (ushort)(z + 1), instant);
            ActivateablePhysics.DoDoors(lvl, x, y, (ushort)(z - 1), instant);
            ActivateablePhysics.DoDoors(lvl, x, (ushort)(y - 1), z, instant);
            ActivateablePhysics.DoDoors(lvl, x, (ushort)(y + 1), z, instant);

            if (block == Block.Door_Green && lvl.physics != 5)
            {
                ActivateablePhysics.DoNeighbours(lvl, x, y, z);
            }
        }
コード例 #2
0
        // Change anys door blocks nearby into air forms
        public static void Door(Level lvl, ref Check C)
        {
            ushort x, y, z;

            lvl.IntToPos(C.b, out x, out y, out z);
            byte block   = C.data.Value2;
            bool instant = !C.data.ExtBlock && (block == Block.Door_Air || block == Block.Door_AirActivatable);

            ActivateablePhysics.DoDoors(lvl, (ushort)(x + 1), y, z, instant);
            ActivateablePhysics.DoDoors(lvl, (ushort)(x - 1), y, z, instant);
            ActivateablePhysics.DoDoors(lvl, x, y, (ushort)(z + 1), instant);
            ActivateablePhysics.DoDoors(lvl, x, y, (ushort)(z - 1), instant);
            ActivateablePhysics.DoDoors(lvl, x, (ushort)(y - 1), z, instant);
            ActivateablePhysics.DoDoors(lvl, x, (ushort)(y + 1), z, instant);

            if (block == Block.Door_Green && lvl.physics != 5)
            {
                ActivateablePhysics.DoNeighbours(lvl, C.b, x, y, z);
            }
        }