示例#1
0
    public void ChangeRed(bool up)
    {
        string result = CM.ConvertToHex(RedValue);
        string redstr = result[1].ToString() + result[2].ToString();
        int    red    = int.Parse(redstr, System.Globalization.NumberStyles.HexNumber);

        //int alpha = increment / 3;

        int newred = 0;

        if (up)
        {
            if (red + increment >= 255)
            {
                Debug.Log("Red at maximum");
                SetKnob();
                return;
            }
            else
            {
                newred = red + increment;
                RotateKnob(up);
            }
        }
        else
        {
            if (red - increment <= 0)
            {
                Debug.Log("Red at zero");
                RedValue = Color.clear;
                CM.DrawLineBetweenTwoVectors(RedLaserGO.transform.position, Mirror.transform.position, RedValue, LineMaterial, RedLaserGO, RedLaser, false);
                ChangeOutput();
                SetKnob();
                return;
            }
            else
            {
                newred = red - increment;
                RotateKnob(up);
            }
        }

        Debug.Log(newred);
        string hexValue = "#" + newred.ToString("X") + "0000";

        if (hexValue.Length == 6)
        {
            hexValue = hexValue.Insert(1, "0");
        }
        RedValue = CM.ConvertToColor(hexValue);

        CM.DrawLineBetweenTwoVectors(RedLaserGO.transform.position, Mirror.transform.position, RedValue, LineMaterial, RedLaserGO, RedLaser, false);
        ChangeOutput();
    }
示例#2
0
    public void ChangeCyan(bool up)
    {
        string result = CM.ConvertToHex(CyanValue);
        string redstr = result[1].ToString() + result[2].ToString();
        int    red    = int.Parse(redstr, System.Globalization.NumberStyles.HexNumber);
        int    newred = 0;

        if (up)
        {
            // Max
            if (red - increment <= 0)
            {
                Debug.Log("Cyan at maximum");
                CyanValue = Color.black;
                ChangeOutput(up);
                SetKnob();
                return;
            }
            else
            {
                // Approach 0
                newred = red - increment;
                RotateKnob(up);
            }
        }
        else
        {
            //Minimum
            if (red + increment >= 255)
            {
                Debug.Log("Cyan at minimum.");
                CyanValue = Color.white;
                ChangeOutput(up);
                SetKnob();
                return;
            }
            else
            {
                // Approach 255
                newred = red + increment;
                RotateKnob(up);
            }
        }

        Debug.Log(newred);
        string hexValue = "#" + newred.ToString("X") + "0000";

        if (hexValue.Length == 6)
        {
            hexValue = hexValue.Insert(1, "0");
        }
        CyanValue = CM.ConvertToColor(hexValue);
        ChangeOutput(up);
    }
示例#3
0
    public void ChangeBlue(bool up)
    {
        string result  = CM.ConvertToHex(BlueValue);
        string bluestr = result[5].ToString() + result[6].ToString();
        int    blue    = int.Parse(bluestr, System.Globalization.NumberStyles.HexNumber);

        int newblue = 0;

        if (up)
        {
            if (blue + increment >= 255)
            {
                Debug.Log("Blue at maximum");
                SetKnob();
                return;
            }
            else
            {
                newblue = blue + increment;
                RotateKnob(up);
            }
        }
        else
        {
            if (blue - increment <= 0)
            {
                Debug.Log("Blue at zero or will be below zero.");
                BlueValue = Color.clear;
                CM.DrawLineBetweenTwoVectors(BlueLaserGO.transform.position, Mirror.transform.position, BlueValue, LineMaterial, BlueLaserGO, BlueLaser, true);
                ChangeOutput();
                SetKnob();
                return;
            }
            else
            {
                newblue = blue - increment;
                RotateKnob(up);
            }
        }

        Debug.Log(newblue);
        string hexValue = "#0000" + newblue.ToString("X");

        if (hexValue.Length == 6)
        {
            hexValue = hexValue.Insert(5, "0");
        }
        BlueValue = CM.ConvertToColor(hexValue);
        Debug.Log(BlueValue);
        CM.DrawLineBetweenTwoVectors(BlueLaserGO.transform.position, Mirror.transform.position, BlueValue, LineMaterial, BlueLaserGO, BlueLaser, true);
        ChangeOutput();
    }
示例#4
0
    public void ChangeGreen(bool up)
    {
        string result   = CM.ConvertToHex(GreenValue);
        string greenstr = result[3].ToString() + result[4].ToString();
        int    green    = int.Parse(greenstr, System.Globalization.NumberStyles.HexNumber);

        int newgreen = 0;

        if (up)
        {
            if (green + increment >= 255)
            {
                Debug.Log("Green at maximum");
                SetKnob();
                return;
            }
            else
            {
                newgreen = green + increment;
                RotateKnob(up);
            }
        }
        else
        {
            if (green - increment <= 0)
            {
                Debug.Log("Green at zero");
                GreenValue = Color.clear;
                CM.DrawLineBetweenTwoVectors(GreenLaserGO.transform.position, Mirror.transform.position, GreenValue, LineMaterial, GreenLaserGO, GreenLaser, false);
                ChangeOutput();
                SetKnob();
                return;
            }
            else
            {
                newgreen = green - increment;
                RotateKnob(up);
            }
        }

        Debug.Log(newgreen);
        string hexValue = "#00" + newgreen.ToString("X") + "00";

        if (hexValue.Length == 6)
        {
            hexValue = hexValue.Insert(3, "0");
        }
        GreenValue = CM.ConvertToColor(hexValue);
        CM.DrawLineBetweenTwoVectors(GreenLaserGO.transform.position, Mirror.transform.position, GreenValue, LineMaterial, GreenLaserGO, GreenLaser, false);
        ChangeOutput();
    }
示例#5
0
    public void ChangeYellow(bool up)
    {
        string result  = CM.ConvertToHex(YellowValue);
        string bluestr = result[5].ToString() + result[6].ToString();
        int    blue    = int.Parse(bluestr, System.Globalization.NumberStyles.HexNumber);

        int newblue = 0;

        if (up)
        {
            if (blue - increment <= 0)
            {
                Debug.Log("Yellow at maximum.");
                YellowValue = Color.black;
                ChangeOutput(up);
                SetKnob();
                return;
            }
            else
            {
                newblue = blue - increment;
                RotateKnob(up);
            }
        }
        else
        {
            if (blue + increment >= 255)
            {
                Debug.Log("Yellow at minimum");
                YellowValue = Color.white;
                ChangeOutput(up);
                SetKnob();
                return;
            }
            else
            {
                newblue = blue + increment;
                RotateKnob(up);
            }
        }

        string hexValue = "#0000" + newblue.ToString("X");

        if (hexValue.Length == 6)
        {
            hexValue = hexValue.Insert(5, "0");
        }
        YellowValue = CM.ConvertToColor(hexValue);
        ChangeOutput(up);
    }
示例#6
0
    public void ChangeMagenta(bool up)
    {
        string result   = CM.ConvertToHex(MagnetaValue);
        string greenstr = result[3].ToString() + result[4].ToString();
        int    green    = int.Parse(greenstr, System.Globalization.NumberStyles.HexNumber);
        int    newgreen = 0;

        if (up)
        {
            if (green - increment <= 0)
            {
                Debug.Log("Magenta at maximum");
                MagnetaValue = Color.black;
                ChangeOutput(up);
                SetKnob();
                return;
            }
            else
            {
                newgreen = green - increment;
                RotateKnob(up);
            }
        }
        else
        {
            if (green + increment >= 255)
            {
                Debug.Log("Magenta at minimum");
                MagnetaValue = Color.white;
                ChangeOutput(up);
                SetKnob();
                return;
            }
            else
            {
                newgreen = green + increment;
                RotateKnob(up);
            }
        }

        Debug.Log(newgreen);
        string hexValue = "#00" + newgreen.ToString("X") + "00";

        if (hexValue.Length == 6)
        {
            hexValue = hexValue.Insert(3, "0");
        }
        MagnetaValue = CM.ConvertToColor(hexValue);
        ChangeOutput(up);
    }
示例#7
0
    public void ChangeOutput()
    {
        string red   = CM.ConvertToHex(RedValue);
        string green = CM.ConvertToHex(GreenValue);
        string blue  = CM.ConvertToHex(BlueValue);

        string hexValue = "#" + red[1] + red[2] + green[3] + green[4] + blue[5] + blue[6];

        OutputVal = CM.ConvertToColor(hexValue);
        if (RedValue == Color.clear && GreenValue == Color.clear && BlueValue == Color.clear)
        {
            OutputVal = Color.clear;
        }
        CM.DrawLineBetweenTwoVectors(Mirror.transform.position, OutputLaserGO.transform.position, OutputVal, LineMaterial, OutputLaserGO, OutputLaser, true);
    }
示例#8
0
    public void PrintColor()
    {
        string result = CM.ConvertToHex(OutputVal);
        //Debug.Log("Color: " + result);
        string redstr   = result[1].ToString() + result[2].ToString();
        string greenstr = result[3].ToString() + result[4].ToString();
        string bluestr  = result[3].ToString() + result[4].ToString();

        int red   = int.Parse(redstr, System.Globalization.NumberStyles.HexNumber);
        int green = int.Parse(greenstr, System.Globalization.NumberStyles.HexNumber);
        int blue  = int.Parse(bluestr, System.Globalization.NumberStyles.HexNumber);
        //Debug.Log("Red: " + red + " Green: " + green + " Blue: " + blue);

        string hexValue = red.ToString("X");
        //Debug.Log("NewRed: " + hexValue);
    }
示例#9
0
    public void Match()
    {
        // Output
        string resultOutput = CM.ConvertToHex(OutputVal);
        // Red
        string redstr1 = resultOutput[1].ToString() + resultOutput[2].ToString();
        int    red1    = int.Parse(redstr1, System.Globalization.NumberStyles.HexNumber);
        // Green
        string greenstr1 = resultOutput[3].ToString() + resultOutput[4].ToString();
        int    green1    = int.Parse(greenstr1, System.Globalization.NumberStyles.HexNumber);
        // Blue
        string bluestr1 = resultOutput[5].ToString() + resultOutput[6].ToString();
        int    blue1    = int.Parse(bluestr1, System.Globalization.NumberStyles.HexNumber);

        // True
        string result = CM.ConvertToHex(TrueValue);
        // Red
        string redstr2 = result[1].ToString() + result[2].ToString();
        int    red2    = int.Parse(redstr2, System.Globalization.NumberStyles.HexNumber);
        // Green
        string greenstr2 = result[3].ToString() + result[4].ToString();
        int    green2    = int.Parse(greenstr2, System.Globalization.NumberStyles.HexNumber);
        // Blue
        string bluestr2 = result[5].ToString() + result[6].ToString();
        int    blue2    = int.Parse(bluestr2, System.Globalization.NumberStyles.HexNumber);

        // Result
        int redResult   = red1 - red2;
        int blueResult  = blue1 - blue2;
        int greenResult = green1 - green2;

        // Array
        int[] arr = new int[] { redResult, blueResult, greenResult };
        int   max = arr.Max();


        if (max <= increment)
        {
            Debug.Log("Color Matched");
            CM.SetColorMaterialTransform(Color.green, Result.transform);
        }
        else
        {
            Debug.Log("Color Unmatched");
            CM.SetColorMaterialTransform(Color.red, Result.transform);
        }
    }
示例#10
0
    public void ChangeOutput(bool up)
    {
        // CMY
        string cyan     = CM.ConvertToHex(CyanValue);
        string magenta  = CM.ConvertToHex(MagnetaValue);
        string yellow   = CM.ConvertToHex(YellowValue);
        string hexValue = "#" + cyan[1] + cyan[2] + magenta[3] + magenta[4] + yellow[5] + yellow[6];

        // Change color
        OutputVal = CM.ConvertToColor(hexValue);
        if (CyanValue == Color.black && MagnetaValue == Color.black && YellowValue == Color.black)
        {
            OutputVal = Color.black;
        }

        // Color
        ParticleSystem.MainModule psMain = mixture.main;
        psMain.startColor = OutputVal;

        // Length
        float length = heightMax * (1 / mixtureMax);

        ParticleSystem.ShapeModule psShape = mixture.shape;
        if (up)
        {
            if (psShape.length + length < heightMax)
            {
                psShape.length += length;
            }
        }
        else
        {
            if (psShape.length - length > heightMin)
            {
                psShape.length -= length;
            }
        }
    }