mirror of
https://github.com/FriendshipIsEpic/FiE-Game.git
synced 2024-11-26 23:37:59 +01:00
281 lines
9.5 KiB
C#
281 lines
9.5 KiB
C#
|
using UnityEngine;
|
|||
|
using UnityEditor;
|
|||
|
using System.Collections;
|
|||
|
using Rotorz.ReorderableList.Internal;
|
|||
|
|
|||
|
public class PhotonGUI
|
|||
|
{
|
|||
|
#region Styles
|
|||
|
static GUIStyle m_DefaultTitleStyle;
|
|||
|
public static GUIStyle DefaultTitleStyle
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if( m_DefaultTitleStyle == null )
|
|||
|
{
|
|||
|
m_DefaultTitleStyle = new GUIStyle();
|
|||
|
m_DefaultTitleStyle.border = new RectOffset( 2, 2, 2, 1 );
|
|||
|
m_DefaultTitleStyle.margin = new RectOffset( 5, 5, 5, 0 );
|
|||
|
m_DefaultTitleStyle.padding = new RectOffset( 5, 5, 0, 0 );
|
|||
|
m_DefaultTitleStyle.alignment = TextAnchor.MiddleLeft;
|
|||
|
m_DefaultTitleStyle.normal.background = ReorderableListResources.texTitleBackground;
|
|||
|
m_DefaultTitleStyle.normal.textColor = EditorGUIUtility.isProSkin
|
|||
|
? new Color( 0.8f, 0.8f, 0.8f )
|
|||
|
: new Color( 0.2f, 0.2f, 0.2f );
|
|||
|
}
|
|||
|
|
|||
|
return m_DefaultTitleStyle;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
static GUIStyle m_DefaultContainerStyle;
|
|||
|
public static GUIStyle DefaultContainerStyle
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if( m_DefaultContainerStyle == null )
|
|||
|
{
|
|||
|
m_DefaultContainerStyle = new GUIStyle();
|
|||
|
m_DefaultContainerStyle.border = new RectOffset( 2, 2, 1, 2 );
|
|||
|
m_DefaultContainerStyle.margin = new RectOffset( 5, 5, 5, 5 );
|
|||
|
m_DefaultContainerStyle.padding = new RectOffset( 1, 1, 2, 2 );
|
|||
|
m_DefaultContainerStyle.normal.background = ReorderableListResources.texContainerBackground;
|
|||
|
}
|
|||
|
|
|||
|
return m_DefaultContainerStyle;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
static GUIStyle m_DefaultAddButtonStyle;
|
|||
|
public static GUIStyle DefaultAddButtonStyle
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if( m_DefaultAddButtonStyle == null )
|
|||
|
{
|
|||
|
m_DefaultAddButtonStyle = new GUIStyle();
|
|||
|
m_DefaultAddButtonStyle.fixedWidth = 30;
|
|||
|
m_DefaultAddButtonStyle.fixedHeight = 16;
|
|||
|
m_DefaultAddButtonStyle.normal.background = ReorderableListResources.texAddButton;
|
|||
|
m_DefaultAddButtonStyle.active.background = ReorderableListResources.texAddButtonActive;
|
|||
|
}
|
|||
|
|
|||
|
return m_DefaultAddButtonStyle;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
static GUIStyle m_DefaultRemoveButtonStyle;
|
|||
|
public static GUIStyle DefaultRemoveButtonStyle
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if( m_DefaultRemoveButtonStyle == null )
|
|||
|
{
|
|||
|
m_DefaultRemoveButtonStyle = new GUIStyle();
|
|||
|
m_DefaultRemoveButtonStyle.fixedWidth = 30;
|
|||
|
m_DefaultRemoveButtonStyle.fixedHeight = 20;
|
|||
|
m_DefaultRemoveButtonStyle.active.background = ReorderableListResources.CreatePixelTexture( "Dark Pixel (List GUI)", new Color32( 18, 18, 18, 255 ) );
|
|||
|
m_DefaultRemoveButtonStyle.imagePosition = ImagePosition.ImageOnly;
|
|||
|
m_DefaultRemoveButtonStyle.alignment = TextAnchor.MiddleCenter;
|
|||
|
}
|
|||
|
|
|||
|
return m_DefaultRemoveButtonStyle;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
static GUIStyle m_DefaultContainerRowStyle;
|
|||
|
public static GUIStyle DefaultContainerRowStyle
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if( m_DefaultContainerRowStyle == null )
|
|||
|
{
|
|||
|
m_DefaultContainerRowStyle = new GUIStyle();
|
|||
|
m_DefaultContainerRowStyle.border = new RectOffset( 2, 2, 2, 2 );
|
|||
|
|
|||
|
m_DefaultContainerRowStyle.margin = new RectOffset( 5, 5, 5, 5 );
|
|||
|
m_DefaultContainerRowStyle.padding = new RectOffset( 1, 1, 2, 2 );
|
|||
|
m_DefaultContainerRowStyle.normal.background = ReorderableListResources.texContainerBackground;
|
|||
|
}
|
|||
|
|
|||
|
return m_DefaultContainerRowStyle;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
static GUIStyle m_FoldoutBold;
|
|||
|
public static GUIStyle FoldoutBold
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if( m_FoldoutBold == null )
|
|||
|
{
|
|||
|
m_FoldoutBold = new GUIStyle( EditorStyles.foldout );
|
|||
|
m_FoldoutBold.fontStyle = FontStyle.Bold;
|
|||
|
}
|
|||
|
|
|||
|
return m_FoldoutBold;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
static GUIStyle m_RichLabel;
|
|||
|
public static GUIStyle RichLabel
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if( m_RichLabel == null )
|
|||
|
{
|
|||
|
m_RichLabel = new GUIStyle( GUI.skin.label );
|
|||
|
m_RichLabel.richText = true;
|
|||
|
m_RichLabel.wordWrap = true;
|
|||
|
}
|
|||
|
|
|||
|
return m_RichLabel;
|
|||
|
}
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
static Texture2D m_HelpIcon;
|
|||
|
public static Texture2D HelpIcon
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if( m_HelpIcon == null )
|
|||
|
{
|
|||
|
m_HelpIcon = AssetDatabase.LoadAssetAtPath( "Assets/Photon Unity Networking/Editor/PhotonNetwork/help.png", typeof( Texture2D ) ) as Texture2D;
|
|||
|
}
|
|||
|
|
|||
|
return m_HelpIcon;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#region Interface
|
|||
|
public static void ContainerHeader( string headline )
|
|||
|
{
|
|||
|
DoContainerHeader( headline, 27, 0 );
|
|||
|
}
|
|||
|
|
|||
|
public static bool ContainerHeaderToggle( string headline, bool toggle )
|
|||
|
{
|
|||
|
return DoContainerHeaderToggle( headline, toggle );
|
|||
|
}
|
|||
|
|
|||
|
public static bool ContainerHeaderFoldout( string headline, bool foldout )
|
|||
|
{
|
|||
|
return DoContainerHeaderFoldout( headline, foldout );
|
|||
|
}
|
|||
|
|
|||
|
public static Rect ContainerBody( float height )
|
|||
|
{
|
|||
|
return DoContainerBody( height );
|
|||
|
}
|
|||
|
|
|||
|
public static bool AddButton()
|
|||
|
{
|
|||
|
Rect controlRect = EditorGUILayout.GetControlRect( false, DefaultAddButtonStyle.fixedHeight - 5 );
|
|||
|
controlRect.yMin -= 5;
|
|||
|
controlRect.yMax -= 5;
|
|||
|
|
|||
|
Rect addButtonRect = new Rect( controlRect.xMax - DefaultAddButtonStyle.fixedWidth,
|
|||
|
controlRect.yMin,
|
|||
|
DefaultAddButtonStyle.fixedWidth,
|
|||
|
DefaultAddButtonStyle.fixedHeight );
|
|||
|
|
|||
|
return GUI.Button( addButtonRect, "", DefaultAddButtonStyle );
|
|||
|
}
|
|||
|
|
|||
|
public static void DrawSplitter( Rect position )
|
|||
|
{
|
|||
|
ReorderableListResources.DrawTexture( position, ReorderableListResources.texItemSplitter );
|
|||
|
}
|
|||
|
|
|||
|
public static void DrawGizmoOptions(
|
|||
|
Rect position,
|
|||
|
string label,
|
|||
|
SerializedProperty gizmoEnabledProperty,
|
|||
|
SerializedProperty gizmoColorProperty,
|
|||
|
SerializedProperty gizmoTypeProperty,
|
|||
|
SerializedProperty gizmoSizeProperty )
|
|||
|
{
|
|||
|
float height = EditorGUIUtility.singleLineHeight;
|
|||
|
float flexibleWidth = Mathf.Max( 40, position.width - EditorGUIUtility.labelWidth - 20 - 75 - 5 - 40 - 5 );
|
|||
|
|
|||
|
Rect labelRect = new Rect( position.xMin, position.yMin, EditorGUIUtility.labelWidth, height );
|
|||
|
GUI.Label( labelRect, label );
|
|||
|
|
|||
|
Rect enabledRect = new Rect( labelRect.xMax, labelRect.yMin, 20, height );
|
|||
|
EditorGUI.PropertyField( enabledRect, gizmoEnabledProperty, GUIContent.none );
|
|||
|
|
|||
|
bool oldGUIEnabled = GUI.enabled;
|
|||
|
GUI.enabled = gizmoEnabledProperty.boolValue;
|
|||
|
|
|||
|
Rect colorRect = new Rect( enabledRect.xMax + 5, labelRect.yMin, 70, height );
|
|||
|
EditorGUI.PropertyField( colorRect, gizmoColorProperty, GUIContent.none );
|
|||
|
|
|||
|
Rect typeRect = new Rect( colorRect.xMax + 5, labelRect.yMin, flexibleWidth * 0.7f, height );
|
|||
|
EditorGUI.PropertyField( typeRect, gizmoTypeProperty, GUIContent.none );
|
|||
|
|
|||
|
Rect sizeLabelRect = new Rect( typeRect.xMax + 10, labelRect.yMin, 30, height );
|
|||
|
GUI.Label( sizeLabelRect, "Size" );
|
|||
|
|
|||
|
Rect sizeRect = new Rect( sizeLabelRect.xMax + 5, labelRect.yMin, flexibleWidth * 0.3f, height );
|
|||
|
EditorGUI.PropertyField( sizeRect, gizmoSizeProperty, GUIContent.none );
|
|||
|
|
|||
|
GUI.enabled = oldGUIEnabled;
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Implementation
|
|||
|
static Rect DoContainerBody( float height )
|
|||
|
{
|
|||
|
Rect controlRect = EditorGUILayout.GetControlRect( false, height );
|
|||
|
controlRect.yMin -= 3;
|
|||
|
controlRect.yMax -= 2;
|
|||
|
|
|||
|
int controlID = GUIUtility.GetControlID( FocusType.Passive, controlRect );
|
|||
|
|
|||
|
if( Event.current.type == EventType.Repaint )
|
|||
|
{
|
|||
|
PhotonGUI.DefaultContainerStyle.Draw( controlRect, GUIContent.none, controlID );
|
|||
|
}
|
|||
|
|
|||
|
return controlRect;
|
|||
|
}
|
|||
|
|
|||
|
static bool DoContainerHeaderToggle( string headline, bool toggle )
|
|||
|
{
|
|||
|
Rect rect = DoContainerHeader( headline, 27, 15 );
|
|||
|
Rect toggleRect = new Rect( rect.xMin + 5, rect.yMin + 5, EditorGUIUtility.labelWidth, rect.height );
|
|||
|
|
|||
|
return EditorGUI.Toggle( toggleRect, toggle );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
static bool DoContainerHeaderFoldout( string headline, bool foldout )
|
|||
|
{
|
|||
|
Rect rect = DoContainerHeader( "", 27, 0f );
|
|||
|
Rect foldoutRect = new Rect( rect.xMin + 15, rect.yMin + 5, rect.width, rect.height );
|
|||
|
|
|||
|
return EditorGUI.Foldout( foldoutRect, foldout, headline, FoldoutBold );
|
|||
|
}
|
|||
|
|
|||
|
static Rect DoContainerHeader( string headline, float height, float contentOffset )
|
|||
|
{
|
|||
|
GUILayout.Space( 5 );
|
|||
|
Rect controlRect = EditorGUILayout.GetControlRect( false, height );
|
|||
|
|
|||
|
int controlID = GUIUtility.GetControlID( FocusType.Passive, controlRect );
|
|||
|
|
|||
|
if( Event.current.type == EventType.Repaint )
|
|||
|
{
|
|||
|
PhotonGUI.DefaultTitleStyle.Draw( controlRect, GUIContent.none, controlID );
|
|||
|
|
|||
|
Rect labelRect = new Rect( controlRect.xMin + 5 + contentOffset, controlRect.yMin + 5, controlRect.width, controlRect.height );
|
|||
|
GUI.Label( labelRect, headline, EditorStyles.boldLabel );
|
|||
|
}
|
|||
|
|
|||
|
return controlRect;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
}
|