95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace UnityEditor.Timeline
 | |
| {
 | |
|     readonly struct OverlayDrawer
 | |
|     {
 | |
|         enum OverlayType
 | |
|         {
 | |
|             BackgroundColor,
 | |
|             BackgroundTexture,
 | |
|             TextBox
 | |
|         }
 | |
| 
 | |
|         readonly OverlayType m_Type;
 | |
|         readonly Rect m_Rect;
 | |
|         readonly string m_Text;
 | |
|         readonly Texture2D m_Texture;
 | |
|         readonly Color m_Color;
 | |
|         readonly GUIStyle m_BackgroundTextStyle;
 | |
|         readonly GUIStyle m_TextStyle;
 | |
| 
 | |
|         OverlayDrawer(Rect rectangle, Color backgroundColor)
 | |
|         {
 | |
|             m_Type = OverlayType.BackgroundColor;
 | |
|             m_Rect = rectangle;
 | |
|             m_Color = backgroundColor;
 | |
|             m_Text = string.Empty;
 | |
|             m_Texture = null;
 | |
|             m_BackgroundTextStyle = null;
 | |
|             m_TextStyle = null;
 | |
|         }
 | |
| 
 | |
|         OverlayDrawer(Rect rectangle, Texture2D backTexture)
 | |
|         {
 | |
|             m_Type = OverlayType.BackgroundTexture;
 | |
|             m_Rect = rectangle;
 | |
|             m_Color = Color.clear;
 | |
|             m_Text = string.Empty;
 | |
|             m_Texture = backTexture;
 | |
|             m_BackgroundTextStyle = null;
 | |
|             m_TextStyle = null;
 | |
|         }
 | |
| 
 | |
|         OverlayDrawer(Rect rectangle, string msg, GUIStyle textStyle, Color textColor, Color bgTextColor, GUIStyle bgTextStyle)
 | |
|         {
 | |
|             m_Type = OverlayType.TextBox;
 | |
|             m_Rect = rectangle;
 | |
|             m_Text = msg;
 | |
|             m_TextStyle = textStyle;
 | |
|             m_TextStyle.normal.textColor = textColor;
 | |
|             m_BackgroundTextStyle = bgTextStyle;
 | |
|             m_BackgroundTextStyle.normal.textColor = bgTextColor;
 | |
|             m_Texture = null;
 | |
|             m_Color = Color.clear;
 | |
|         }
 | |
| 
 | |
|         public static OverlayDrawer CreateColorOverlay(Rect rectangle, Color backgroundColor)
 | |
|         {
 | |
|             return new OverlayDrawer(rectangle, backgroundColor);
 | |
|         }
 | |
| 
 | |
|         public static OverlayDrawer CreateTextureOverlay(Rect rectangle, Texture2D backTexture)
 | |
|         {
 | |
|             return new OverlayDrawer(rectangle, backTexture);
 | |
|         }
 | |
| 
 | |
|         public static OverlayDrawer CreateTextBoxOverlay(Rect rectangle, string msg, GUIStyle textStyle, Color textColor, Color bgTextColor, GUIStyle bgTextStyle)
 | |
|         {
 | |
|             return new OverlayDrawer(rectangle, msg, textStyle, textColor, bgTextColor, bgTextStyle);
 | |
|         }
 | |
| 
 | |
|         public void Draw()
 | |
|         {
 | |
|             Rect overlayRect = GUIClip.Clip(m_Rect);
 | |
|             switch (m_Type)
 | |
|             {
 | |
|                 case OverlayType.BackgroundColor:
 | |
|                     EditorGUI.DrawRect(overlayRect, m_Color);
 | |
|                     break;
 | |
|                 case OverlayType.BackgroundTexture:
 | |
|                     Graphics.DrawTextureRepeated(overlayRect, m_Texture);
 | |
|                     break;
 | |
|                 case OverlayType.TextBox:
 | |
|                 {
 | |
|                     using (new GUIColorOverride(m_BackgroundTextStyle.normal.textColor))
 | |
|                         GUI.Box(overlayRect, GUIContent.none, m_BackgroundTextStyle);
 | |
|                     Graphics.ShadowLabel(overlayRect, GUIContent.Temp(m_Text), m_TextStyle, m_TextStyle.normal.textColor, Color.black);
 | |
|                     break;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |