Esempio n. 1
0
    // TODO need service
    //private IEnumerator PublishMsg()
    //{
    //    while (true)
    //    {
    //        yield return new WaitForSecondsRealtime(publishRate);
    //        if (Bridge == null || Bridge.Status != Ros.Status.Connected) yield return null;

    //        string msg = "";
    //        string rate = "";

    //        switch (currentLEDMode)
    //        {
    //            case LEDModeTypes.None:
    //                msg = "c";
    //                break;
    //            case LEDModeTypes.All:
    //                msg = "a";
    //                break;
    //            case LEDModeTypes.Blink:
    //                msg = "b";
    //                rate = (blinkRate * 1000).ToString("0000");
    //                break;
    //            case LEDModeTypes.Fade:
    //                msg = "f";
    //                rate = (fadeRate * 1000).ToString("0000");
    //                break;
    //            case LEDModeTypes.Right:
    //                msg = "r";
    //                rate = (blinkRate * 1000).ToString("0000");
    //                break;
    //            case LEDModeTypes.Left:
    //                msg = "l";
    //                rate = (blinkRate * 1000).ToString("0000");
    //                break;
    //            default:
    //                break;
    //        }
    //        if (msg != "c")
    //        {
    //            switch (currentLEDColor)
    //            {
    //                case LEDColorTypes.White:
    //                    msg += "w";
    //                    break;
    //                case LEDColorTypes.Green:
    //                    msg += "g";
    //                    break;
    //                case LEDColorTypes.Red:
    //                    msg += "r";
    //                    break;
    //                case LEDColorTypes.Blue:
    //                    msg += "b";
    //                    break;
    //                case LEDColorTypes.Orange:
    //                    msg += "o";
    //                    break;
    //                case LEDColorTypes.Rainbow:
    //                    msg += "R";
    //                    rate = (rainbowRate * 1000).ToString("0000");
    //                    break;
    //                default:
    //                    break;
    //            }
    //            msg += rate;
    //        }

    //        //Bridge.Publish(ledTopicName, new Ros.LED()
    //        //{
    //        //    msg = msg
    //        //});
    //        //Debug.Log(msg);
    //    }
    //}

    private void SetLEDMode(LEDModeTypes modeIndex)
    {
        if (isFirstEnabled)
        {
            isFirstEnabled = false;
            AgentSetup agentSetup = GetComponentInParent <AgentSetup>();
            if (agentSetup != null && agentSetup.NeedsBridge != null)
            {
                agentSetup.AddToNeedsBridge(this);
            }
        }

        currentLEDMode = modeIndex;
    }
Esempio n. 2
0
 private void SetLEDMode(LEDModeTypes modeIndex)
 {
     currentLEDMode = modeIndex;
 }
Esempio n. 3
0
    private void ApplyLEDMode(LEDModeTypes mode)
    {
        if (currentLEDColor == LEDColorTypes.Rainbow)
        {
            lerpedColor = Color.Lerp(lerpedColor, ledColors[rainbowIndex], rainbowRate);
            ledColors[(int)LEDColorTypes.Rainbow] = lerpedColor;
            if (currentRainbowRate < 1)
            {
                currentRainbowRate += Time.deltaTime / rainbowRate;
            }
            else
            {
                currentRainbowRate = 0f;
                rainbowIndex       = rainbowIndex < ledColors.Count - 2 ? rainbowIndex + 1 : rainbowIndex = 0;
            }
        }

        switch (mode)
        {
        case LEDModeTypes.None:
            ledMatRight.material.DisableKeyword("_EMISSION");
            ledMatLeft.material.DisableKeyword("_EMISSION");
            ledMatRight.material.SetTexture("_EmissionMap", null);
            ledMatLeft.material.SetTexture("_EmissionMap", null);
            foreach (var item in ledLightsRight)
            {
                item.enabled = false;
            }
            foreach (var item in ledLightsLeft)
            {
                item.enabled = false;
            }
            break;

        case LEDModeTypes.All:
            ledMatRight.material.EnableKeyword("_EMISSION");
            ledMatLeft.material.EnableKeyword("_EMISSION");
            ledMatRight.material.SetTexture("_EmissionMap", null);
            ledMatLeft.material.SetTexture("_EmissionMap", null);
            ledMatRight.material.SetColor("_EmissionColor", ledColors[(int)currentLEDColor] * 1f);
            ledMatLeft.material.SetColor("_EmissionColor", ledColors[(int)currentLEDColor] * 1f);
            foreach (var item in ledLightsRight)
            {
                item.color   = ledColors[(int)currentLEDColor];
                item.enabled = true;
            }
            foreach (var item in ledLightsLeft)
            {
                item.color   = ledColors[(int)currentLEDColor];
                item.enabled = true;
            }
            break;

        case LEDModeTypes.Blink:
            ledMatRight.material.SetTexture("_EmissionMap", null);
            ledMatLeft.material.SetTexture("_EmissionMap", null);
            if (currentBlinkTime < 1)
            {
                currentBlinkTime += Time.deltaTime / blinkRate;
                if (isBlinkOn)
                {
                    ledMatRight.material.EnableKeyword("_EMISSION");
                    ledMatLeft.material.EnableKeyword("_EMISSION");
                    ledMatRight.material.SetColor("_EmissionColor", ledColors[(int)currentLEDColor] * 1f);
                    ledMatLeft.material.SetColor("_EmissionColor", ledColors[(int)currentLEDColor] * 1f);
                    foreach (var item in ledLightsRight)
                    {
                        item.color   = ledColors[(int)currentLEDColor];
                        item.enabled = true;
                    }
                    foreach (var item in ledLightsLeft)
                    {
                        item.color   = ledColors[(int)currentLEDColor];
                        item.enabled = true;
                    }
                }
                else
                {
                    ledMatRight.material.DisableKeyword("_EMISSION");
                    ledMatLeft.material.DisableKeyword("_EMISSION");
                    foreach (var item in ledLightsRight)
                    {
                        item.enabled = false;
                    }
                    foreach (var item in ledLightsLeft)
                    {
                        item.enabled = false;
                    }
                }
            }
            else
            {
                currentBlinkTime = 0f;
                isBlinkOn        = !isBlinkOn;
            }
            break;

        case LEDModeTypes.Fade:
            fadeOffset = Time.time * -fadeRate;
            ledMatRight.material.EnableKeyword("_EMISSION");
            ledMatLeft.material.EnableKeyword("_EMISSION");
            ledMatRight.material.SetTexture("_EmissionMap", fadeLEDEmitTexture);
            ledMatLeft.material.SetTexture("_EmissionMap", fadeLEDEmitTexture);
            ledMatRight.material.SetColor("_EmissionColor", ledColors[(int)currentLEDColor] * 2f);
            ledMatLeft.material.SetColor("_EmissionColor", ledColors[(int)currentLEDColor] * 2f);
            ledMatRight.material.SetTextureOffset("_MainTex", new Vector2(0, fadeOffset));
            ledMatLeft.material.SetTextureOffset("_MainTex", new Vector2(0, fadeOffset));
            foreach (var item in ledLightsRight)
            {
                item.color   = ledColors[(int)currentLEDColor];
                item.enabled = true;
            }
            foreach (var item in ledLightsLeft)
            {
                item.color   = ledColors[(int)currentLEDColor];
                item.enabled = true;
            }
            break;

        case LEDModeTypes.Right:
            ledMatRight.material.SetTexture("_EmissionMap", null);
            ledMatLeft.material.DisableKeyword("_EMISSION");
            foreach (var item in ledLightsLeft)
            {
                item.enabled = false;
            }
            if (currentBlinkTime < 1)
            {
                currentBlinkTime += Time.deltaTime / blinkRate;
                if (isBlinkOn)
                {
                    ledMatRight.material.EnableKeyword("_EMISSION");
                    ledMatRight.material.SetColor("_EmissionColor", ledColors[(int)currentLEDColor] * 1f);
                    foreach (var item in ledLightsRight)
                    {
                        item.color   = ledColors[(int)currentLEDColor];
                        item.enabled = true;
                    }
                }
                else
                {
                    ledMatRight.material.DisableKeyword("_EMISSION");
                    foreach (var item in ledLightsRight)
                    {
                        item.enabled = false;
                    }
                }
            }
            else
            {
                currentBlinkTime = 0f;
                isBlinkOn        = !isBlinkOn;
            }
            break;

        case LEDModeTypes.Left:
            ledMatLeft.material.SetTexture("_EmissionMap", null);
            ledMatRight.material.DisableKeyword("_EMISSION");
            foreach (var item in ledLightsRight)
            {
                item.enabled = false;
            }
            if (currentBlinkTime < 1)
            {
                currentBlinkTime += Time.deltaTime / blinkRate;
                if (isBlinkOn)
                {
                    ledMatLeft.material.EnableKeyword("_EMISSION");
                    ledMatLeft.material.SetColor("_EmissionColor", ledColors[(int)currentLEDColor] * 1f);
                    foreach (var item in ledLightsLeft)
                    {
                        item.color   = ledColors[(int)currentLEDColor];
                        item.enabled = true;
                    }
                }
                else
                {
                    ledMatLeft.material.DisableKeyword("_EMISSION");
                    foreach (var item in ledLightsLeft)
                    {
                        item.enabled = false;
                    }
                }
            }
            else
            {
                currentBlinkTime = 0f;
                isBlinkOn        = !isBlinkOn;
            }
            break;

        default:
            break;
        }
    }