void OnEnable() { Color backColor = EditorGUIUtility.isProSkin ? new Color(0.18f, 0.18f, 0.18f): new Color(0.7f, 0.7f, 0.7f); _blackTexture = MakeTex(4, 4, backColor); _blackTexture.hideFlags = HideFlags.DontSave; blackStyle = new GUIStyle(); blackStyle.normal.background = _blackTexture; _ticker = (WMSK_Ticker)target; if (tickers == null || tickers.Length == 0) { _ticker.Init(); } tickerNames = new string[tickers.Length]; for (int k = 0; k < tickerNames.Length; k++) { tickerNames[k] = k.ToString(); } tickerLine = Mathf.Clamp(tickerLine, 0, tickerNames.Length - 1); // instance a sample ticker text for the inspector sampleTicker = new TickerText(); }
// Sample code to show how tickers work void TickerSample() { map.ticker.ResetTickerBands(); // Configure 1st ticker band: a red band in the northern hemisphere TickerBand tickerBand = map.ticker.tickerBands [0]; tickerBand.verticalOffset = 0.2f; tickerBand.backgroundColor = new Color(1, 0, 0, 0.9f); tickerBand.scrollSpeed = 0; // static band tickerBand.visible = true; tickerBand.autoHide = true; // Prepare a static, blinking, text for the red band TickerText tickerText = new TickerText(0, "WARNING!!"); tickerText.textColor = Color.yellow; tickerText.blinkInterval = 0.2f; tickerText.horizontalOffset = 0.1f; tickerText.duration = 10.0f; // Draw it! map.ticker.AddTickerText(tickerText); // Configure second ticker band (below the red band) tickerBand = map.ticker.tickerBands [1]; tickerBand.verticalOffset = 0.1f; tickerBand.verticalSize = 0.05f; tickerBand.backgroundColor = new Color(0, 0, 1, 0.9f); tickerBand.visible = true; tickerBand.autoHide = true; // Prepare a ticker text tickerText = new TickerText(1, "INCOMING MISSILE!!"); tickerText.textColor = Color.white; // Draw it! map.ticker.AddTickerText(tickerText); }
public override void OnInspectorGUI() { if (_ticker == null) { return; } if (tickerNames.Length < tickers.Length) { return; } bool refresh = false; EditorGUILayout.Separator(); EditorGUILayout.BeginVertical(blackStyle); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Ticker Band", GUILayout.Width(120)); tickerLine = EditorGUILayout.Popup(tickerLine, tickerNames, GUILayout.Width(80)); if (GUILayout.Button("Reset Ticker", GUILayout.MaxWidth(120))) { _ticker.ResetTickerBand(tickerLine); refresh = true; } if (GUILayout.Button("Reset All", GUILayout.MaxWidth(120))) { _ticker.ResetTickerBands(); refresh = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Visible", GUILayout.Width(120)); bool oldb = tickers[tickerLine].visible; tickers[tickerLine].visible = EditorGUILayout.Toggle(tickers[tickerLine].visible, GUILayout.Width(20)); if (oldb != tickers[tickerLine].visible) { refresh = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Scroll Speed", GUILayout.Width(120)); tickers[tickerLine].scrollSpeed = EditorGUILayout.Slider(tickers[tickerLine].scrollSpeed, -0.5f, 0.5f); if (GUILayout.Button("Static")) { tickers[tickerLine].scrollSpeed = 0; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Vertical Offset", GUILayout.Width(120)); float oldf = tickers[tickerLine].verticalOffset; tickers[tickerLine].verticalOffset = EditorGUILayout.Slider(tickers[tickerLine].verticalOffset, -0.5f, 0.5f); if (oldf != tickers[tickerLine].verticalOffset) { refresh = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Size", GUILayout.Width(120)); oldf = tickers[tickerLine].verticalSize; tickers[tickerLine].verticalSize = EditorGUILayout.Slider(tickers[tickerLine].verticalSize, 0.01f, 1.0f); if (oldf != tickers[tickerLine].verticalSize) { refresh = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUIContent autoHideContent = new GUIContent(" Auto Hide", "Ticker will automatically hide if it's empty"); oldb = tickers[tickerLine].autoHide; GUILayout.Label(autoHideContent, GUILayout.Width(120)); tickers[tickerLine].autoHide = EditorGUILayout.Toggle(tickers[tickerLine].autoHide, GUILayout.Width(20)); if (oldb != tickers[tickerLine].autoHide) { refresh = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Background Color", GUILayout.Width(120)); Color oldc = tickers[tickerLine].backgroundColor; tickers[tickerLine].backgroundColor = EditorGUILayout.ColorField(tickers[tickerLine].backgroundColor, GUILayout.Width(50)); if (oldc != tickers[tickerLine].backgroundColor) { refresh = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Fade Speed", GUILayout.Width(120)); oldf = tickers[tickerLine].fadeSpeed; tickers[tickerLine].fadeSpeed = EditorGUILayout.Slider(tickers[tickerLine].fadeSpeed, 0, 5.0f); if (oldf != tickers[tickerLine].fadeSpeed) { refresh = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); EditorGUILayout.Separator(); EditorGUILayout.BeginVertical(blackStyle); // allows the user to create a sample ticker and add it to the map EditorGUILayout.BeginHorizontal(); GUILayout.Label("Add Sample Text", GUILayout.Width(120)); EditorStyles.textField.wordWrap = true; sampleTicker.text = EditorGUILayout.TextArea(sampleTicker.text, GUILayout.Height(60)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Ticker Line", GUILayout.Width(120)); sampleTicker.tickerLine = EditorGUILayout.Popup(sampleTicker.tickerLine, tickerNames, GUILayout.Width(80)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Horizontal Offset", GUILayout.Width(120)); oldf = sampleTicker.horizontalOffset; sampleTicker.horizontalOffset = EditorGUILayout.Slider(sampleTicker.horizontalOffset, -0.5f, 0.5f); if (oldf != sampleTicker.horizontalOffset) { refresh = true; } if (tickers[tickerLine].scrollSpeed != 0) { DrawWarningLabel("(ignored because scroll speed)"); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Text Color", GUILayout.Width(120)); sampleTicker.textColor = EditorGUILayout.ColorField(sampleTicker.textColor, GUILayout.Width(50)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Draw Shadow", GUILayout.Width(120)); sampleTicker.drawTextShadow = EditorGUILayout.Toggle(sampleTicker.drawTextShadow); if (sampleTicker.drawTextShadow) { GUILayout.Label("Shadow Color", GUILayout.Width(120)); sampleTicker.shadowColor = EditorGUILayout.ColorField(sampleTicker.shadowColor, GUILayout.Width(50)); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Fade Duration", GUILayout.Width(120)); sampleTicker.fadeDuration = EditorGUILayout.Slider(sampleTicker.fadeDuration, 0, 10.0f); EditorGUILayout.EndHorizontal(); if (tickers[tickerLine].scrollSpeed == 0) { EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Duration", GUILayout.Width(120)); duration = sampleTicker.duration.ToString(); duration = EditorGUILayout.TextField(duration, GUILayout.Width(80)); sampleTicker.duration = ToFloat(duration); EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Blink Interval", GUILayout.Width(120)); sampleTicker.blinkInterval = EditorGUILayout.Slider(sampleTicker.blinkInterval, 0, 5.0f); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Blink Repetitions", GUILayout.Width(120)); sampleTicker.blinkRepetitions = EditorGUILayout.IntSlider(sampleTicker.blinkRepetitions, 0, 50); EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Launch Test Ticker") && Application.isPlaying) { _ticker.AddTickerText(sampleTicker); if (sampleTicker.duration == 0) { sampleTicker = (TickerText)sampleTicker.Clone(); // maintain properties but allow to create a new/different ticker without affecting previous one } } if (!Application.isPlaying) { DrawWarningLabel("Not available in Edit mode"); } EditorGUILayout.EndVertical(); EditorGUILayout.Separator(); if (!Application.isPlaying && (refresh || pendingChanges)) { pendingChanges = _ticker.UpdateTickerBands(); if (pendingChanges) { EditorUtility.SetDirty(target); } } }