public void Main()
        {
            elapsedTime += Runtime.TimeSinceLastRun.TotalSeconds;
            while (elapsedTime >= animationTime)
            {
                elapsedTime -= animationTime;
                direction    = !direction;
            }
            float time      = (float)((direction ? (animationTime - elapsedTime) : elapsedTime) / animationTime);
            float intensity = MathHelper.Lerp(beginIntensity, endIntensity, time);
            Color color     = Color.Lerp(beginColor, endColor, time);

            GridTerminalSystem.GetBlocks(blocks);
            foreach (IMyTerminalBlock block in blocks)
            {
                if (block is IMyLightingBlock)
                {
                    IMyLightingBlock lighting_block = (IMyLightingBlock)block;
                    lighting_block.Intensity = intensity;
                    lighting_block.Color     = color;
                }
                else if (block is IMyReflectorLight)
                {
                    IMyReflectorLight reflector_light = (IMyReflectorLight)block;
                    reflector_light.Intensity = intensity;
                    reflector_light.Color     = color;
                }
            }
        }
 public void ChangeSetColor(IMyReflectorLight light, Color color, float radius, float intensity, int numLights, string mode)
 {
     light.Color      = color;
     light.CustomData = color.ToString() + ";" + mode;
     if (radius != 0)
     {
         light.Radius = radius;
     }
     if (intensity != 0)
     {
         light.Intensity = intensity;
     }
 }
Example #3
0
        bool FuncTest(IMyReflectorLight block)
        {
            //Spotlight
            //Interface name: IMyReflectorLight
            //Parent: IMyLightingBlock
            //Parent: IMyFunctionalBlock
            //Fields:
            float Radius               = block.Radius;
            float Intensity            = block.Intensity;
            float BlinkIntervalSeconds = block.BlinkIntervalSeconds;
            float BlinkLenght          = block.BlinkLenght;
            float BlinkOffset          = block.BlinkOffset;

            return(true);
        }
        public void ChangeRandomColor(IMyReflectorLight light, Random rand, int[,] colors, float radius, float intensity, int numLights, string mode)
        {
            int colorIndex = rand.Next(colors.GetLength(0));

            light.Color      = new Color(colors[colorIndex, 0], colors[colorIndex, 1], colors[colorIndex, 2]);
            light.CustomData = light.Color.ToString() + ";" + mode + ";" + colorIndex;
            if (radius != 0)
            {
                light.Radius = radius;
            }
            if (intensity != 0)
            {
                light.Intensity = intensity;
            }
        }
        public Program()
        {
            LightList  = new List <IMyInteriorLight>();
            DoorList   = new List <IMyDoor>();
            SensorList = new List <IMySensorBlock>();

            IMyBlockGroup Lights = GridTerminalSystem.GetBlockGroupWithName("Airlock Lights");

            if (Lights == null)
            {
                Echo("Cannot find light group");
            }
            IMyBlockGroup Doors = GridTerminalSystem.GetBlockGroupWithName("Airlock Doors");

            if (Doors == null)
            {
                Echo("Cannot find door group");
            }
            IMyBlockGroup Sensors = GridTerminalSystem.GetBlockGroupWithName("Airlock Sensors");

            if (Sensors == null)
            {
                Echo("Cannot find sensor group");
            }

            Lights.GetBlocksOfType(LightList);
            Doors.GetBlocksOfType(DoorList);
            Sensors.GetBlocksOfType(SensorList);

            SpinningLight = GridTerminalSystem.GetBlockWithName("Airlock Rotating Light") as IMyReflectorLight;
            if (SpinningLight == null)
            {
                Echo("Cannot find spinning light");
            }
            Vent = GridTerminalSystem.GetBlockWithName("Airlock Vent") as IMyAirVent;
            if (Vent == null)
            {
                Echo("Cannot find air vent");
            }
        }
        void Main()
        {
            /****************
            * DOOR VARIABLES
            * **************/
            IMyDoor door1 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door1");
            IMyDoor door2 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door2");
            IMyDoor door3 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door3");
            IMyDoor door4 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door4");
            IMyDoor door5 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door5");
            IMyDoor door6 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door6");
            IMyDoor door7 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door7");
            IMyDoor door8 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door8");
            IMyDoor door9 = (IMyDoor)GridTerminalSystem.GetBlockWithName("Door9");

            /****************
            * SENSOR VARIABLES
            * **************/

            IMySensorBlock sensor1     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorBlack");
            IMySensorBlock sensor2     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorBlue");
            IMySensorBlock sensor3     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorCyan");
            IMySensorBlock sensor4     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorGreen");
            IMySensorBlock sensor5     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorLBlue");
            IMySensorBlock sensor6     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorOrange");
            IMySensorBlock sensor7     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorPink");
            IMySensorBlock sensor8     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorWhite");
            IMySensorBlock sensor9     = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorYellow");
            IMySensorBlock resetSensor = (IMySensorBlock)GridTerminalSystem.GetBlockWithName("SensorReset");

            /****************
            * ROTOR VARIABLES
            * **************/

            IMyMotorStator blackRotor     = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("BlackRotor");
            IMyMotorStator blueRotor      = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("BlueRotor");
            IMyMotorStator cyanRotor      = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("CyanRotor");
            IMyMotorStator greenRotor     = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("GreenRotor");
            IMyMotorStator lightBlueRotor = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("LightBlueRotor");
            IMyMotorStator orangeRotor    = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("OrangeRotor");
            IMyMotorStator pinkRotor      = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("PinkRotor");
            IMyMotorStator whiteRotor     = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("WhiteRotor");
            IMyMotorStator yellowRotor    = (IMyMotorStator)GridTerminalSystem.GetBlockWithName("YellowRotor");

            /****************
            * SPOTLIGHT VARIABLES
            * **************/

            IMyReflectorLight spotlightBlack     = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightBlack");
            IMyReflectorLight spotlightBlue      = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightBlue");
            IMyReflectorLight spotlightCyan      = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightCyan");
            IMyReflectorLight spotlightGreen     = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightGreen");
            IMyReflectorLight spotlightLightBlue = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightLightBlue");
            IMyReflectorLight spotlightOrange    = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightOrange");
            IMyReflectorLight spotlightPink      = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightPink");
            IMyReflectorLight spotlightWhite     = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightWhite");
            IMyReflectorLight spotlightYellow    = (IMyReflectorLight)GridTerminalSystem.GetBlockWithName("SpotlightYellow");


            //SUCCESS
            //Black door
            if (sensor1.IsActive == true &&
                door1.Open == false &&
                door2.Open == false &&
                door3.Open == false &&
                door4.Open == false &&
                door5.Open == false &&
                door6.Open == false &&
                door7.Open == false &&
                door8.Open == false &&
                door9.Open == false)
            {
                door1.GetActionWithName("Open_On").Apply(door1);
                sensor1.GetActionWithName("OnOff_Off").Apply(sensor1);
                blueRotor.GetActionWithName("ResetVelocity").Apply(blueRotor);
                spotlightBlue.GetActionWithName("IncreaseBlink Interval").Apply(spotlightBlue);
                resetSensor.GetActionWithName("OnOff_On").Apply(resetSensor);


                for (int i = 0; i < 6; i += 3)
                {
                    blackRotor.GetActionWithName("IncreaseVelocity").Apply(blackRotor);
                }
                spotlightBlack.GetActionWithName("DecreaseBlink Interval").Apply(spotlightBlack);
            }

            //Blue door
            else if (sensor2.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == false &&
                     door3.Open == false &&
                     door4.Open == false &&
                     door5.Open == false &&
                     door6.Open == false &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door2.GetActionWithName("Open_On").Apply(door2);
                sensor2.GetActionWithName("OnOff_Off").Apply(sensor2);
                cyanRotor.GetActionWithName("ResetVelocity").Apply(cyanRotor);
                spotlightCyan.GetActionWithName("IncreaseBlink Interval").Apply(spotlightCyan);

                for (int i = 0; i < 6; i += 3)
                {
                    blueRotor.GetActionWithName("IncreaseVelocity").Apply(blueRotor);
                }
                spotlightBlue.GetActionWithName("DecreaseBlink Interval").Apply(spotlightBlue);
            }

            //Cyan door
            else if (sensor3.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == false &&
                     door4.Open == false &&
                     door5.Open == false &&
                     door6.Open == false &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door3.GetActionWithName("Open_On").Apply(door3);
                sensor3.GetActionWithName("OnOff_Off").Apply(sensor3);
                greenRotor.GetActionWithName("ResetVelocity").Apply(greenRotor);
                spotlightGreen.GetActionWithName("IncreaseBlink Interval").Apply(spotlightGreen);

                for (int i = 0; i < 6; i += 3)
                {
                    cyanRotor.GetActionWithName("IncreaseVelocity").Apply(cyanRotor);
                }
                spotlightCyan.GetActionWithName("DecreaseBlink Interval").Apply(spotlightCyan);
            }

            //Green door
            else if (sensor4.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == false &&
                     door5.Open == false &&
                     door6.Open == false &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door4.GetActionWithName("Open_On").Apply(door4);
                sensor4.GetActionWithName("OnOff_Off").Apply(sensor4);
                lightBlueRotor.GetActionWithName("ResetVelocity").Apply(lightBlueRotor);
                spotlightLightBlue.GetActionWithName("IncreaseBlink Interval").Apply(spotlightLightBlue);

                for (int i = 0; i < 6; i += 3)
                {
                    greenRotor.GetActionWithName("IncreaseVelocity").Apply(greenRotor);
                }
                spotlightGreen.GetActionWithName("DecreaseBlink Interval").Apply(spotlightGreen);
            }

            //Light blue door
            else if (sensor5.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == false &&
                     door6.Open == false &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door5.GetActionWithName("Open_On").Apply(door5);
                sensor5.GetActionWithName("OnOff_Off").Apply(sensor5);
                orangeRotor.GetActionWithName("ResetVelocity").Apply(orangeRotor);
                spotlightOrange.GetActionWithName("IncreaseBlink Interval").Apply(spotlightOrange);

                for (int i = 0; i < 6; i += 3)
                {
                    lightBlueRotor.GetActionWithName("IncreaseVelocity").Apply(lightBlueRotor);
                }
                spotlightLightBlue.GetActionWithName("DecreaseBlink Interval").Apply(spotlightLightBlue);
            }

            //Orange door
            else if (sensor6.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == true &&
                     door6.Open == false &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door6.GetActionWithName("Open_On").Apply(door6);
                sensor6.GetActionWithName("OnOff_Off").Apply(sensor6);
                pinkRotor.GetActionWithName("ResetVelocity").Apply(pinkRotor);
                spotlightPink.GetActionWithName("IncreaseBlink Interval").Apply(spotlightPink);

                for (int i = 0; i < 6; i += 3)
                {
                    orangeRotor.GetActionWithName("IncreaseVelocity").Apply(orangeRotor);
                }
                spotlightOrange.GetActionWithName("DecreaseBlink Interval").Apply(spotlightOrange);
            }

            //Pink rotor
            else if (sensor7.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == true &&
                     door6.Open == true &&
                     door7.Open == false &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door7.GetActionWithName("Open_On").Apply(door7);
                sensor7.GetActionWithName("OnOff_Off").Apply(sensor7);
                whiteRotor.GetActionWithName("ResetVelocity").Apply(whiteRotor);
                spotlightWhite.GetActionWithName("IncreaseBlink Interval").Apply(spotlightWhite);

                for (int i = 0; i < 6; i += 3)
                {
                    pinkRotor.GetActionWithName("IncreaseVelocity").Apply(pinkRotor);
                }
                spotlightPink.GetActionWithName("DecreaseBlink Interval").Apply(spotlightPink);
            }

            //White rotor
            else if (sensor8.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == true &&
                     door6.Open == true &&
                     door7.Open == true &&
                     door8.Open == false &&
                     door9.Open == false)
            {
                door8.GetActionWithName("Open_On").Apply(door8);
                sensor8.GetActionWithName("OnOff_Off").Apply(sensor8);
                yellowRotor.GetActionWithName("ResetVelocity").Apply(yellowRotor);
                spotlightYellow.GetActionWithName("IncreaseBlink Interval").Apply(spotlightYellow);

                for (int i = 0; i < 6; i += 3)
                {
                    whiteRotor.GetActionWithName("IncreaseVelocity").Apply(whiteRotor);
                }
                spotlightWhite.GetActionWithName("DecreaseBlink Interval").Apply(spotlightWhite);
            }

            //Yellow door
            else if (sensor9.IsActive == true &&
                     door1.Open == true &&
                     door2.Open == true &&
                     door3.Open == true &&
                     door4.Open == true &&
                     door5.Open == true &&
                     door6.Open == true &&
                     door7.Open == true &&
                     door8.Open == true &&
                     door9.Open == false)
            {
                door9.GetActionWithName("Open_On").Apply(door9);
                sensor9.GetActionWithName("OnOff_Off").Apply(sensor9);

                for (int i = 0; i < 6; i += 3)
                {
                    yellowRotor.GetActionWithName("IncreaseVelocity").Apply(yellowRotor);
                }
                spotlightYellow.GetActionWithName("DecreaseBlink Interval").Apply(spotlightYellow);
            }

            //FAILURE
            else
            {
                //Reset doors
                door1.GetActionWithName("Open_Off").Apply(door1);
                door2.GetActionWithName("Open_Off").Apply(door2);
                door3.GetActionWithName("Open_Off").Apply(door3);
                door4.GetActionWithName("Open_Off").Apply(door4);
                door5.GetActionWithName("Open_Off").Apply(door5);
                door6.GetActionWithName("Open_Off").Apply(door6);
                door7.GetActionWithName("Open_Off").Apply(door7);
                door8.GetActionWithName("Open_Off").Apply(door8);
                door9.GetActionWithName("Open_Off").Apply(door9);

                //Reset sensors
                sensor1.GetActionWithName("OnOff_On").Apply(sensor1);
                sensor2.GetActionWithName("OnOff_On").Apply(sensor2);
                sensor3.GetActionWithName("OnOff_On").Apply(sensor3);
                sensor4.GetActionWithName("OnOff_On").Apply(sensor4);
                sensor5.GetActionWithName("OnOff_On").Apply(sensor5);
                sensor6.GetActionWithName("OnOff_On").Apply(sensor6);
                sensor7.GetActionWithName("OnOff_On").Apply(sensor7);
                sensor8.GetActionWithName("OnOff_On").Apply(sensor8);
                sensor9.GetActionWithName("OnOff_On").Apply(sensor9);

                //Reset rotors
                blackRotor.GetActionWithName("ResetVelocity").Apply(blackRotor);
                blueRotor.GetActionWithName("ResetVelocity").Apply(blueRotor);
                cyanRotor.GetActionWithName("ResetVelocity").Apply(cyanRotor);
                greenRotor.GetActionWithName("ResetVelocity").Apply(greenRotor);
                lightBlueRotor.GetActionWithName("ResetVelocity").Apply(lightBlueRotor);
                orangeRotor.GetActionWithName("ResetVelocity").Apply(orangeRotor);
                pinkRotor.GetActionWithName("ResetVelocity").Apply(pinkRotor);
                whiteRotor.GetActionWithName("ResetVelocity").Apply(whiteRotor);
                yellowRotor.GetActionWithName("ResetVelocity").Apply(yellowRotor);

                for (int i = 0; i < 6; i += 3)
                {
                    blueRotor.GetActionWithName("IncreaseVelocity").Apply(blueRotor);
                    cyanRotor.GetActionWithName("IncreaseVelocity").Apply(cyanRotor);
                    greenRotor.GetActionWithName("IncreaseVelocity").Apply(greenRotor);
                    lightBlueRotor.GetActionWithName("IncreaseVelocity").Apply(lightBlueRotor);
                    orangeRotor.GetActionWithName("IncreaseVelocity").Apply(orangeRotor);
                    pinkRotor.GetActionWithName("IncreaseVelocity").Apply(pinkRotor);
                    whiteRotor.GetActionWithName("IncreaseVelocity").Apply(whiteRotor);
                    yellowRotor.GetActionWithName("IncreaseVelocity").Apply(yellowRotor);
                }

                //Reset spotlights
                spotlightBlue.GetActionWithName("DecreaseBlink Interval").Apply(spotlightBlue);
                spotlightCyan.GetActionWithName("DecreaseBlink Interval").Apply(spotlightCyan);
                spotlightGreen.GetActionWithName("DecreaseBlink Interval").Apply(spotlightGreen);
                spotlightLightBlue.GetActionWithName("DecreaseBlink Interval").Apply(spotlightLightBlue);
                spotlightOrange.GetActionWithName("DecreaseBlink Interval").Apply(spotlightOrange);
                spotlightPink.GetActionWithName("DecreaseBlink Interval").Apply(spotlightPink);
                spotlightWhite.GetActionWithName("DecreaseBlink Interval").Apply(spotlightWhite);
                spotlightYellow.GetActionWithName("DecreaseBlink Interval").Apply(spotlightYellow);

                if (spotlightBlack.BlinkIntervalSeconds < 1.5)
                {
                    spotlightBlack.GetActionWithName("IncreaseBlink Interval").Apply(spotlightBlack);
                }
            }
        }