// 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; }
private void SetLEDMode(LEDModeTypes modeIndex) { currentLEDMode = modeIndex; }
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; } }