From 23478b573424d180ed946ad350b54923f9589c07 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Mon, 3 Apr 2023 06:42:06 +0800 Subject: [PATCH] add but not implement SystemDebugMonitor --- src/Debug/Systems/PipelineDebugSystem.cs | 18 ++++++++---- src/Debug/Systems/SystemDebugMonitor.cs | 29 ++++++++++++++++++++ src/Debug/Systems/SystemDebugMonitor.cs.meta | 11 ++++++++ 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 src/Debug/Systems/SystemDebugMonitor.cs create mode 100644 src/Debug/Systems/SystemDebugMonitor.cs.meta diff --git a/src/Debug/Systems/PipelineDebugSystem.cs b/src/Debug/Systems/PipelineDebugSystem.cs index 907064a..ee53d44 100644 --- a/src/Debug/Systems/PipelineDebugSystem.cs +++ b/src/Debug/Systems/PipelineDebugSystem.cs @@ -1,4 +1,5 @@ -using DCFApixels.DragonECS.Unity.Debug; +using DCFApixels.DragonECS.Unity; +using DCFApixels.DragonECS.Unity.Debug; using System.Reflection; using UnityEngine; @@ -16,14 +17,21 @@ namespace DCFApixels.DragonECS void IEcsPreInitSystem.PreInit(EcsPipeline pipeline) { - SystemsDebugMonitor monitor = new GameObject(EcsConsts.DEBUG_PREFIX + _monitorName).AddComponent(); + PipelineDebugMonitor monitor = new GameObject(EcsConsts.DEBUG_PREFIX + _monitorName).AddComponent(); monitor.source = this; monitor.pipeline = pipeline; monitor.monitorName = _monitorName; + + //foreach (var item in pipeline.AllSystems) //Вырезано пока не сделаю TODO в SystemDebugMonitor + //{ + // DebugNameAttribute debugName = item.GetType().GetCustomAttribute(); + // string name = debugName == null ? item.GetType().Name : debugName.name; + // SystemDebugMonitor.CreateMonitor(monitor.transform, item, name); + //} } } - public class SystemsDebugMonitor : DebugMonitorBase + public class PipelineDebugMonitor : DebugMonitorBase { internal PipelineDebugSystem source; internal EcsPipeline pipeline; @@ -36,7 +44,7 @@ namespace DCFApixels.DragonECS using System.Linq; using UnityEditor; - [CustomEditor(typeof(SystemsDebugMonitor))] + [CustomEditor(typeof(PipelineDebugMonitor))] public class PipelineDebugMonitorEditor : Editor { private DebugColorAttribute _fakeDebugColorAttribute = new DebugColorAttribute(DebugColor.White); @@ -44,7 +52,7 @@ namespace DCFApixels.DragonECS private GUIStyle _headerStyle; private GUIStyle _interfacesStyle; private Color _interfaceColor = new Color(0.96f, 1f, 0.16f); - private SystemsDebugMonitor Target => (SystemsDebugMonitor)target; + private PipelineDebugMonitor Target => (PipelineDebugMonitor)target; public override void OnInspectorGUI() { if (Target.source == null) diff --git a/src/Debug/Systems/SystemDebugMonitor.cs b/src/Debug/Systems/SystemDebugMonitor.cs new file mode 100644 index 0000000..ca4a8f1 --- /dev/null +++ b/src/Debug/Systems/SystemDebugMonitor.cs @@ -0,0 +1,29 @@ +using DCFApixels.DragonECS.Unity.Debug; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace DCFApixels.DragonECS.Unity +{ + public class SystemDebugMonitor :MonoBehaviour + { + [SerializeReference] + private IEcsSystem _target; //TODO переделать подручнуюотрисовку, потому как [SerializeReference] не работает с generic-ами + + public static SystemDebugMonitor CreateMonitor(Transform parent, IEcsSystem system, string name) + { + GameObject go = new GameObject(name); + go.transform.parent = parent; + go.transform.position = Vector3.zero; + go.transform.rotation = Quaternion.identity; + + go.SetActive(false); + + SystemDebugMonitor result = go.AddComponent(); + + result._target = system; + + return result; + } + } +} diff --git a/src/Debug/Systems/SystemDebugMonitor.cs.meta b/src/Debug/Systems/SystemDebugMonitor.cs.meta new file mode 100644 index 0000000..31cb0e4 --- /dev/null +++ b/src/Debug/Systems/SystemDebugMonitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf4cdc68b5b89a14c81a53b600078536 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: