예제 #1
0
        static void ChangeDoorSuccess(ref ChangeDoorMsg msg, MyNetworkClient sender)
        {
            MyEntity entity;

            MyEntities.TryGetEntityById(msg.EntityId, out entity);
            MyAdvancedDoor block = entity as MyAdvancedDoor;

            if (block != null)
            {
                block.Open = msg.Open;
            }
        }
 public MyUseObjectAdvancedDoorTerminal(IMyEntity owner, string dummyName, MyModelDummy dummyData, int key)
 {
     Door = (MyAdvancedDoor)owner;
     LocalMatrix = dummyData.Matrix;
 }
예제 #3
0
 public MySyncAdvancedDoor(MyAdvancedDoor block)
 {
     m_block = block;
 }
 public MyUseObjectAdvancedDoorTerminal(IMyEntity owner, string dummyName, MyModelDummy dummyData, uint key)
     : base(owner, dummyData)
 {
     Door        = (MyAdvancedDoor)owner;
     LocalMatrix = dummyData.Matrix;
 }
예제 #5
0
        byte linkSkip = 127; // link ASAP

        public override void Init(MyObjectBuilder_EntityBase objectBuilder)
        {
            block       = (MyAdvancedDoor)Entity;
            def         = (MyAdvancedDoorDefinition)((MyCubeBlock)block).BlockDefinition;
            NeedsUpdate = MyEntityUpdateEnum.EACH_FRAME;
        }
예제 #6
0
        private bool IsPressurized(IMySlimBlock block, Vector3I pos, Vector3 normal)
        {
            var def = (MyCubeBlockDefinition)block.BlockDefinition;

            if (def.BuildProgressModels.Length > 0)
            {
                MyCubeBlockDefinition.BuildProgressModel buildProgressModel = def.BuildProgressModels[def.BuildProgressModels.Length - 1];
                if (block.BuildLevelRatio < buildProgressModel.BuildRatioUpperBound)
                {
                    return(false);
                }
            }
            Matrix matrix;

            block.Orientation.GetMatrix(out matrix);
            matrix.TransposeRotationInPlace();
            Vector3 vector   = Vector3.Transform(normal, matrix);
            Vector3 position = Vector3.Zero;

            if (block.FatBlock != null)
            {
                position = pos - block.FatBlock.Position;
            }
            Vector3 value = Vector3.Transform(position, matrix) + def.Center;
            bool    flag  = def.IsCubePressurized[Vector3I.Round(value)][Vector3I.Round(vector)];

            if (flag)
            {
                return(true);
            }
            if (block.FatBlock != null)
            {
                MyCubeBlock fatBlock = (MyCubeBlock)block.FatBlock;
                bool        result;
                if (fatBlock is MyDoor)
                {
                    MyDoor myDoor = fatBlock as MyDoor;
                    if (!myDoor.Open)
                    {
                        MyCubeBlockDefinition.MountPoint[] mountPoints = def.MountPoints;
                        for (int i = 0; i < mountPoints.Length; i++)
                        {
                            MyCubeBlockDefinition.MountPoint mountPoint = mountPoints[i];
                            if (vector == mountPoint.Normal)
                            {
                                result = false;
                                return(result);
                            }
                        }
                        return(true);
                    }
                    return(false);
                }
                else if (fatBlock is MyAdvancedDoor)
                {
                    MyAdvancedDoor myAdvancedDoor = fatBlock as MyAdvancedDoor;
                    if (myAdvancedDoor.FullyClosed)
                    {
                        MyCubeBlockDefinition.MountPoint[] mountPoints2 = def.MountPoints;
                        for (int j = 0; j < mountPoints2.Length; j++)
                        {
                            MyCubeBlockDefinition.MountPoint mountPoint2 = mountPoints2[j];
                            if (vector == mountPoint2.Normal)
                            {
                                result = false;
                                return(result);
                            }
                        }
                        return(true);
                    }
                    return(false);
                }
                else if (fatBlock is MyAirtightSlideDoor)
                {
                    MyAirtightDoorGeneric myAirtightDoorGeneric = fatBlock as MyAirtightDoorGeneric;
                    if (myAirtightDoorGeneric.IsFullyClosed && vector == Vector3.Forward)
                    {
                        return(true);
                    }
                    return(false);
                }
                else
                {
                    if (!(fatBlock is MyAirtightDoorGeneric))
                    {
                        return(false);
                    }
                    MyAirtightDoorGeneric myAirtightDoorGeneric2 = fatBlock as MyAirtightDoorGeneric;
                    if (myAirtightDoorGeneric2.IsFullyClosed && (vector == Vector3.Forward || vector == Vector3.Backward))
                    {
                        return(true);
                    }
                    return(false);
                }
            }
            return(false);
        }