|
|
- using UnityEngine;
- using Photon.Bolt.Utils;
-
- #if UNITY_EDITOR
- using UnityEditor;
- #endif
-
- namespace Photon.Bolt.Internal
- {
- public class UnityDebugDrawer : IDebugDrawer
- {
- bool isEditor;
-
- void IDebugDrawer.IsEditor(bool isEditor)
- {
- this.isEditor = isEditor;
- }
-
- void IDebugDrawer.SelectGameObject(GameObject gameObject)
- {
- #if UNITY_EDITOR
- if (!isEditor)
- {
- Selection.activeGameObject = gameObject;
- }
- #endif
- }
-
- void IDebugDrawer.Indent(int level)
- {
- #if UNITY_EDITOR
- if (isEditor)
- {
- EditorGUI.indentLevel = level;
- return;
- }
- #endif
- }
-
- void IDebugDrawer.Label(string text)
- {
- #if UNITY_EDITOR
- if (isEditor)
- {
- GUILayout.Label(text);
- return;
- }
- #endif
-
- DebugInfo.Label(text);
- }
-
- void IDebugDrawer.LabelBold(string text)
- {
- #if UNITY_EDITOR
- if (isEditor)
- {
- GUILayout.Label(text, EditorStyles.boldLabel);
- return;
- }
- #endif
-
- DebugInfo.LabelBold(text);
- }
-
- void IDebugDrawer.LabelField(string text, object value)
- {
- #if UNITY_EDITOR
- if (isEditor)
- {
- EditorGUILayout.LabelField(text, value.ToString());
- return;
- }
- #endif
-
- DebugInfo.LabelField(text, value);
- }
-
- void IDebugDrawer.Separator()
- {
- #if UNITY_EDITOR
- if (isEditor)
- {
- EditorGUILayout.Separator();
- return;
- }
- #endif
-
- GUILayout.Space(2);
- }
-
- void IDebugDrawer.DrawObjectArray(IDebugDrawerObjectArray root)
- {
- #if UNITY_EDITOR
- if (isEditor)
- {
- var fields = root.GetChildren();
-
- for (int i = 0; i < fields.Length; i++)
- {
- DrawObjectArrayItem(fields[i]);
- }
-
- return;
- }
- #endif
- }
-
- private void DrawObjectArrayItem(IDebugDrawerObjectArray item)
- {
- #if UNITY_EDITOR
- var fields = item.GetChildren();
-
- if (fields.Length > 0)
- {
- item.IsVisible = EditorGUILayout.Foldout(item.IsVisible, item.GetName(), true);
-
- if (item.IsVisible)
- {
- EditorGUI.indentLevel++;
-
- for (int i = 0; i < fields.Length; i++)
- {
- DrawObjectArrayItem(fields[i]);
- }
-
- EditorGUI.indentLevel--;
- }
- }
- else
- {
- (this as IDebugDrawer).LabelField(item.GetName(), item.GetValue());
- }
- #endif
- }
- }
- }
|