//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ using GameFramework; using GameFramework.Entity; using UnityEditor; using UnityGameFramework.Runtime; namespace UnityGameFramework.Editor { [CustomEditor(typeof(EntityComponent))] internal sealed class EntityComponentInspector : GameFrameworkInspector { private SerializedProperty m_EnableShowEntityUpdateEvent = null; private SerializedProperty m_EnableShowEntityDependencyAssetEvent = null; private SerializedProperty m_InstanceRoot = null; private SerializedProperty m_EntityGroups = null; private HelperInfo m_EntityHelperInfo = new HelperInfo("Entity"); private HelperInfo m_EntityGroupHelperInfo = new HelperInfo("EntityGroup"); public override void OnInspectorGUI() { base.OnInspectorGUI(); serializedObject.Update(); EntityComponent t = (EntityComponent)target; EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode); { EditorGUILayout.PropertyField(m_EnableShowEntityUpdateEvent); EditorGUILayout.PropertyField(m_EnableShowEntityDependencyAssetEvent); EditorGUILayout.PropertyField(m_InstanceRoot); m_EntityHelperInfo.Draw(); m_EntityGroupHelperInfo.Draw(); EditorGUILayout.PropertyField(m_EntityGroups, true); } EditorGUI.EndDisabledGroup(); if (EditorApplication.isPlaying && IsPrefabInHierarchy(t.gameObject)) { EditorGUILayout.LabelField("Entity Group Count", t.EntityGroupCount.ToString()); EditorGUILayout.LabelField("Entity Count (Total)", t.EntityCount.ToString()); IEntityGroup[] entityGroups = t.GetAllEntityGroups(); foreach (IEntityGroup entityGroup in entityGroups) { EditorGUILayout.LabelField(Utility.Text.Format("Entity Count ({0})", entityGroup.Name), entityGroup.EntityCount.ToString()); } } serializedObject.ApplyModifiedProperties(); Repaint(); } protected override void OnCompileComplete() { base.OnCompileComplete(); RefreshTypeNames(); } private void OnEnable() { m_EnableShowEntityUpdateEvent = serializedObject.FindProperty("m_EnableShowEntityUpdateEvent"); m_EnableShowEntityDependencyAssetEvent = serializedObject.FindProperty("m_EnableShowEntityDependencyAssetEvent"); m_InstanceRoot = serializedObject.FindProperty("m_InstanceRoot"); m_EntityGroups = serializedObject.FindProperty("m_EntityGroups"); m_EntityHelperInfo.Init(serializedObject); m_EntityGroupHelperInfo.Init(serializedObject); RefreshTypeNames(); } private void RefreshTypeNames() { m_EntityHelperInfo.Refresh(); m_EntityGroupHelperInfo.Refresh(); serializedObject.ApplyModifiedProperties(); } } }