refactoring

This commit is contained in:
Mikhail 2023-06-22 14:40:26 +08:00
parent e728cacfc9
commit cadf7abbd3
12 changed files with 65 additions and 71 deletions

View File

@ -1,6 +1,5 @@
#if UNITY_EDITOR #if UNITY_EDITOR
using UnityEditor; using UnityEditor;
using UnityEngine;
namespace DCFApixels.DragonECS.Editors namespace DCFApixels.DragonECS.Editors
{ {

View File

@ -9,7 +9,7 @@ namespace DCFApixels.DragonECS.Editors
[InitializeOnLoad] [InitializeOnLoad]
public static class EcsEditor public static class EcsEditor
{ {
static EcsEditor() static EcsEditor()
{ {
colorBoxeStyles = new SparseArray<GUIStyle>(); colorBoxeStyles = new SparseArray<GUIStyle>();
} }

View File

@ -204,7 +204,7 @@ namespace DCFApixels.DragonECS
{ {
foreach (var intr in system.GetType().GetInterfaces()) foreach (var intr in system.GetType().GetInterfaces())
{ {
if(systemInterfaceType.IsAssignableFrom(intr) && systemInterfaceType != intr && (showHidden || intr.GetCustomAttribute<DebugHideAttribute>() == null)) if (systemInterfaceType.IsAssignableFrom(intr) && systemInterfaceType != intr && (showHidden || intr.GetCustomAttribute<DebugHideAttribute>() == null))
{ {
ProcessData data; ProcessData data;
if (!_processeIndexes.TryGetValue(intr, out int index)) if (!_processeIndexes.TryGetValue(intr, out int index))
@ -217,7 +217,7 @@ namespace DCFApixels.DragonECS
data.name = EcsEditor.GetGenericName(intr); data.name = EcsEditor.GetGenericName(intr);
data.interfaceType = intr; data.interfaceType = intr;
data.systemsBitMask = new BitMask(_systems.Length); data.systemsBitMask = new BitMask(_systems.Length);
} }
data = _processesList[index]; data = _processesList[index];
data.systemsBitMask[i] = true; data.systemsBitMask[i] = true;
@ -266,7 +266,7 @@ namespace DCFApixels.DragonECS
rect.y = _nameCellSize.y; rect.y = _nameCellSize.y;
rect.width = _nameCellSize.x; rect.width = _nameCellSize.x;
rect.height = _cellsize.x; rect.height = _cellsize.x;
rect.y -= _cellsize.y; rect.y -= _cellsize.y;
for (int i = 0; i < _processesList.Count; i++) for (int i = 0; i < _processesList.Count; i++)
{ {
lineRect = rect; lineRect = rect;
@ -301,7 +301,7 @@ namespace DCFApixels.DragonECS
lineRect.width = rectView.width; lineRect.width = rectView.width;
GUI.Label(lineRect, "", i % 2 == 1 ? whiteStyle : blackStyle); GUI.Label(lineRect, "", i % 2 == 1 ? whiteStyle : blackStyle);
// GUIContent label = new GUIContent(name, i + " " + name); // GUIContent label = new GUIContent(name, i + " " + name);
label.text = name; label.text = name;
label.tooltip = i + " " + name; label.tooltip = i + " " + name;
GUI.Label(rect, label, EditorStyles.miniBoldLabel); GUI.Label(rect, label, EditorStyles.miniBoldLabel);

View File

@ -1,12 +1,10 @@
using DCFApixels.DragonECS.Unity.Debug; using DCFApixels.DragonECS.Unity.Debug;
using System.Collections;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
namespace DCFApixels.DragonECS namespace DCFApixels.DragonECS
{ {
[DebugHide, DebugColor(DebugColor.Gray)] [DebugHide, DebugColor(DebugColor.Gray)]
public class WorldDebugSystem : IEcsRunProcess public class WorldDebugSystem : IEcsRunProcess
{ {
private string _monitorName; private string _monitorName;
private EcsWorld _ecsWorld; private EcsWorld _ecsWorld;
@ -72,8 +70,8 @@ namespace DCFApixels.DragonECS
namespace Editors namespace Editors
{ {
using System.Linq; using System.Linq;
using UnityEditor;
using System.Reflection; using System.Reflection;
using UnityEditor;
[CustomEditor(typeof(WorldPoolsMonitor))] [CustomEditor(typeof(WorldPoolsMonitor))]
public class WorldPoolsMonitorEditor : Editor public class WorldPoolsMonitorEditor : Editor
@ -87,30 +85,30 @@ namespace DCFApixels.DragonECS
public override void OnInspectorGUI() public override void OnInspectorGUI()
{ {
_scroll = GUILayout.BeginScrollView(_scroll, GUILayout.Height(800f)); _scroll = GUILayout.BeginScrollView(_scroll, GUILayout.Height(800f));
var pools = Target.world.AllPools.ToArray().Where(o => !o.IsNullOrDummy()).OfType<IEcsPool>(); var pools = Target.world.AllPools.ToArray().Where(o => !o.IsNullOrDummy()).OfType<IEcsPool>();
GUILayout.Label("", GUILayout.ExpandWidth(true)); GUILayout.Label("", GUILayout.ExpandWidth(true));
float width = GUILayoutUtility.GetLastRect().width; float width = GUILayoutUtility.GetLastRect().width;
Vector3 newPoolBlockSize = _poolBlockMinSize; Vector3 newPoolBlockSize = _poolBlockMinSize;
int widthCount = Mathf.Max(1, Mathf.Min((Mathf.FloorToInt(width / _poolBlockMinSize.x)), pools.Count())); int widthCount = Mathf.Max(1, Mathf.Min((Mathf.FloorToInt(width / _poolBlockMinSize.x)), pools.Count()));
newPoolBlockSize.x = width / widthCount; newPoolBlockSize.x = width / widthCount;
int x = -1, y = 0; int x = -1, y = 0;
foreach (var pool in pools) foreach (var pool in pools)
{ {
if(++x >= widthCount) if (++x >= widthCount)
{ {
x = 0; x = 0;
y++; y++;
} }
DrawPoolBlock(pool, new Rect(newPoolBlockSize.x * x, newPoolBlockSize.y * y, newPoolBlockSize.x, newPoolBlockSize.y)); DrawPoolBlock(pool, new Rect(newPoolBlockSize.x * x, newPoolBlockSize.y * y, newPoolBlockSize.x, newPoolBlockSize.y));
} }
GUILayout.EndScrollView(); GUILayout.EndScrollView();
} }
@ -121,16 +119,16 @@ namespace DCFApixels.DragonECS
Color defaultContentColor = GUI.contentColor; Color defaultContentColor = GUI.contentColor;
GUI.contentColor = Color.black * 0.925f; GUI.contentColor = Color.black * 0.925f;
position = AddMargin(position, 1f, 1f); position = AddMargin(position, 1f, 1f);
EditorGUI.DrawRect(position, Color.black* 0.16f); EditorGUI.DrawRect(position, Color.black * 0.16f);
Rect progressBar = new Rect(Vector2.zero, _poolProgressBasrSize); Rect progressBar = new Rect(Vector2.zero, _poolProgressBasrSize);
progressBar.width = position.width; progressBar.width = position.width;
progressBar.center = position.center - Vector2.up * _poolBlockMinSize.y * 0.09f; progressBar.center = position.center - Vector2.up * _poolBlockMinSize.y * 0.09f;
Color mainColor = new Color(0.3f, 1f, 0f, 1f); Color mainColor = new Color(0.3f, 1f, 0f, 1f);
var debugColor = pool.ComponentType.GetCustomAttribute<DebugColorAttribute>(); var debugColor = pool.ComponentType.GetCustomAttribute<DebugColorAttribute>();
if (debugColor != null) if (debugColor != null)
@ -138,22 +136,22 @@ namespace DCFApixels.DragonECS
mainColor = debugColor.GetUnityColor(); mainColor = debugColor.GetUnityColor();
} }
Color backgroundColor = mainColor * 0.3f + Color.white * 0.2f; Color backgroundColor = mainColor * 0.3f + Color.white * 0.2f;
EditorGUI.DrawRect(progressBar, backgroundColor); EditorGUI.DrawRect(progressBar, backgroundColor);
progressBar.yMin = progressBar.yMax - ((float)count / capacity) * progressBar.height; progressBar.yMin = progressBar.yMax - ((float)count / capacity) * progressBar.height;
GUIStyle textStyle0 = new GUIStyle(EditorStyles.miniBoldLabel); GUIStyle textStyle0 = new GUIStyle(EditorStyles.miniBoldLabel);
textStyle0.alignment = TextAnchor.MiddleCenter; textStyle0.alignment = TextAnchor.MiddleCenter;
Color foregroundColor = mainColor; Color foregroundColor = mainColor;
EditorGUI.DrawRect(progressBar, foregroundColor); EditorGUI.DrawRect(progressBar, foregroundColor);
GUI.Label(progressBar, count.ToString(), textStyle0); GUI.Label(progressBar, count.ToString(), textStyle0);
GUIStyle textStyle1 = new GUIStyle(EditorStyles.miniBoldLabel); GUIStyle textStyle1 = new GUIStyle(EditorStyles.miniBoldLabel);
textStyle1.alignment = TextAnchor.UpperCenter; textStyle1.alignment = TextAnchor.UpperCenter;
GUI.Label(AddMargin(position, 3f, 3f), "Total\r\n"+ capacity, textStyle1); GUI.Label(AddMargin(position, 3f, 3f), "Total\r\n" + capacity, textStyle1);
GUI.contentColor = defaultContentColor; GUI.contentColor = defaultContentColor;
GUIStyle textStyle2 = new GUIStyle(EditorStyles.miniBoldLabel); GUIStyle textStyle2 = new GUIStyle(EditorStyles.miniBoldLabel);
textStyle2.wordWrap = true; textStyle2.wordWrap = true;
@ -161,7 +159,7 @@ namespace DCFApixels.DragonECS
string name = EcsEditor.GetGenericName(pool.ComponentType); string name = EcsEditor.GetGenericName(pool.ComponentType);
GUIContent label = new GUIContent(name, $"{name} e:{count}"); GUIContent label = new GUIContent(name, $"{name} e:{count}");
GUI.Label(AddMargin(position, -10f, 3f), label, textStyle2); GUI.Label(AddMargin(position, -10f, 3f), label, textStyle2);
} }
private Rect AddMargin(Rect rect, Vector2 value) private Rect AddMargin(Rect rect, Vector2 value)

View File

@ -1,6 +1,6 @@
namespace DCFApixels.DragonECS namespace DCFApixels.DragonECS
{ {
public static class EcsUnityConsts public static class EcsUnityConsts
{ {
public const string INFO_MARK = "[i]"; public const string INFO_MARK = "[i]";
} }

View File

@ -21,7 +21,7 @@ namespace DCFApixels.DragonECS
{ {
if (item is ITemplateComponentGizmos g) if (item is ITemplateComponentGizmos g)
g.OnGizmos(transform, ITemplateComponentGizmos.Mode.Always); g.OnGizmos(transform, ITemplateComponentGizmos.Mode.Always);
} }
} }
private void OnDrawGizmosSelected() private void OnDrawGizmosSelected()
{ {

View File

@ -9,7 +9,7 @@ namespace DCFApixels.DragonECS
using UnityEditor; using UnityEditor;
using UnityEngine; using UnityEngine;
public abstract class EntityTemplateEditorBase: Editor public abstract class EntityTemplateEditorBase : Editor
{ {
private static readonly Rect RemoveButtonRect = new Rect(0f, 0f, 15f, 15f); private static readonly Rect RemoveButtonRect = new Rect(0f, 0f, 15f, 15f);
private static readonly Rect TooltipIconRect = new Rect(0f, 0f, 15f, 15f); private static readonly Rect TooltipIconRect = new Rect(0f, 0f, 15f, 15f);
@ -31,7 +31,7 @@ namespace DCFApixels.DragonECS
removeButtonStyle = new GUIStyle(EditorStyles.linkLabel); removeButtonStyle = new GUIStyle(EditorStyles.linkLabel);
removeButtonStyle.alignment = TextAnchor.MiddleCenter; removeButtonStyle.alignment = TextAnchor.MiddleCenter;
removeButtonStyle.normal = tmpstylebase.normal; removeButtonStyle.normal = tmpstylebase.normal;
removeButtonStyle.hover = tmpStyle.normal; removeButtonStyle.hover = tmpStyle.normal;
removeButtonStyle.active = tmpStyle.normal; removeButtonStyle.active = tmpStyle.normal;
@ -44,7 +44,7 @@ namespace DCFApixels.DragonECS
genericMenu = new GenericMenu(); genericMenu = new GenericMenu();
var dummies = TemplateBrowsableTypeCache.Dummies; var dummies = TemplateBrowsableTypeCache.Dummies;
foreach ( var dummy in dummies ) foreach (var dummy in dummies)
{ {
string name, description; string name, description;
if (dummy is ITemplateComponentName browsableName) if (dummy is ITemplateComponentName browsableName)
@ -137,7 +137,7 @@ namespace DCFApixels.DragonECS
private void DrawComponentData(SerializedProperty componentRefProp, int index) private void DrawComponentData(SerializedProperty componentRefProp, int index)
{ {
ITemplateComponent browsable = componentRefProp.managedReferenceValue as ITemplateComponent; ITemplateComponent browsable = componentRefProp.managedReferenceValue as ITemplateComponent;
if(browsable == null) if (browsable == null)
{ {
DrawDamagedComponent(componentRefProp, index); DrawDamagedComponent(componentRefProp, index);
return; return;
@ -173,7 +173,7 @@ namespace DCFApixels.DragonECS
Color panelColor = customInitializer != null ? customInitializer.Color : EcsDebugUtility.GetColorRGB(initializerType).ToUnityColor(); Color panelColor = customInitializer != null ? customInitializer.Color : EcsDebugUtility.GetColorRGB(initializerType).ToUnityColor();
GUILayout.BeginHorizontal(); GUILayout.BeginHorizontal();
GUILayout.BeginVertical(EcsEditor.GetStyle(panelColor, 0.2f)); GUILayout.BeginVertical(EcsEditor.GetStyle(panelColor, 0.2f));
EditorGUI.BeginChangeCheck(); EditorGUI.BeginChangeCheck();
@ -198,7 +198,7 @@ namespace DCFApixels.DragonECS
GUILayout.EndVertical(); GUILayout.EndVertical();
GUILayout.Label("", GUILayout.Width(removeButtonRect.width)); GUILayout.Label("", GUILayout.Width(removeButtonRect.width));
if (GUI.Button(removeButtonRect, "x", removeButtonStyle)) if (GUI.Button(removeButtonRect, "x", removeButtonStyle))
OnRemoveComponentAt(index); OnRemoveComponentAt(index);

View File

@ -1,6 +1,4 @@
using UnityEngine; namespace DCFApixels.DragonECS
namespace DCFApixels.DragonECS
{ {
public interface ITemplate public interface ITemplate
{ {
@ -9,7 +7,7 @@ namespace DCFApixels.DragonECS
public interface ITemplateInternal : ITemplate public interface ITemplateInternal : ITemplate
{ {
// internal ITemplateBrowsable[] Components { get; set; } // internal ITemplateBrowsable[] Components { get; set; }
internal string ComponentsPropertyName { get; } internal string ComponentsPropertyName { get; }
} }

View File

@ -1,5 +1,4 @@
using DCFApixels.DragonECS.Editors; using System;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
@ -51,7 +50,7 @@ namespace DCFApixels.DragonECS
int iBacktick = friendlyName.IndexOf('`'); int iBacktick = friendlyName.IndexOf('`');
if (iBacktick > 0) if (iBacktick > 0)
friendlyName = friendlyName.Remove(iBacktick); friendlyName = friendlyName.Remove(iBacktick);
friendlyName += "/" + friendlyName; friendlyName += "/" + friendlyName;
friendlyName += "<"; friendlyName += "<";
Type[] typeParameters = type.GetGenericArguments(); Type[] typeParameters = type.GetGenericArguments();
@ -122,7 +121,7 @@ namespace DCFApixels.DragonECS
Type interfaceType = typeof(ITemplateComponent); Type interfaceType = typeof(ITemplateComponent);
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{ {
var targetTypes = assembly.GetTypes().Where(type => !type.IsGenericType && (type.IsValueType|| type.IsClass) && type.GetCustomAttribute<SerializableAttribute>() != null); var targetTypes = assembly.GetTypes().Where(type => !type.IsGenericType && (type.IsValueType || type.IsClass) && type.GetCustomAttribute<SerializableAttribute>() != null);
types.AddRange(targetTypes.Where(type => interfaceType.IsAssignableFrom(type))); types.AddRange(targetTypes.Where(type => interfaceType.IsAssignableFrom(type)));
@ -130,7 +129,7 @@ namespace DCFApixels.DragonECS
{ {
if (t.IsSubclassOf(typeof(TemplateComponentInitializer<>))) if (t.IsSubclassOf(typeof(TemplateComponentInitializer<>)))
{ {
if(t.GetCustomAttribute<SerializableAttribute>() != null) if (t.GetCustomAttribute<SerializableAttribute>() != null)
types.Add(t); types.Add(t);
} }
} }

View File

@ -47,7 +47,7 @@ namespace DCFApixels.DragonECS
public void ConnectWith(entlong entity, bool applyTemplates = false) public void ConnectWith(entlong entity, bool applyTemplates = false)
{ {
if(_entity.TryGetID(out int oldE) && _world != null) if (_entity.TryGetID(out int oldE) && _world != null)
{ {
var s = _world.GetAspect<Aspect>(); var s = _world.GetAspect<Aspect>();
s.unityGameObjects.Del(oldE); s.unityGameObjects.Del(oldE);
@ -115,8 +115,8 @@ namespace DCFApixels.DragonECS
GUILayout.Box("Connected", _greenStyle, GUILayout.ExpandWidth(true)); GUILayout.Box("Connected", _greenStyle, GUILayout.ExpandWidth(true));
else else
GUILayout.Box("Not connected", _redStyle, GUILayout.ExpandWidth(true)); GUILayout.Box("Not connected", _redStyle, GUILayout.ExpandWidth(true));
if(Target.Entity.TryGetID(out int id)) if (Target.Entity.TryGetID(out int id))
EditorGUILayout.IntField(id); EditorGUILayout.IntField(id);
else else
EditorGUILayout.IntField(0); EditorGUILayout.IntField(0);
@ -124,10 +124,10 @@ namespace DCFApixels.DragonECS
base.OnInspectorGUI(); base.OnInspectorGUI();
if(GUILayout.Button("Autoset Templates")) if (GUILayout.Button("Autoset Templates"))
{ {
Target.SetTemplates_Editor(Target.GetComponents<EntityTemplate>()); Target.SetTemplates_Editor(Target.GetComponents<EntityTemplate>());
EditorUtility.SetDirty(target); EditorUtility.SetDirty(target);
} }
if (GUILayout.Button("Autoset Templates Cascade")) if (GUILayout.Button("Autoset Templates Cascade"))

View File

@ -65,7 +65,7 @@ namespace DCFApixels.DragonECS
entlong result = self.GetEntityLong(self.NewEmptyEntity()); entlong result = self.GetEntityLong(self.NewEmptyEntity());
GameObject newGameObject = new GameObject(name); GameObject newGameObject = new GameObject(name);
newGameObject.AddComponent<EcsEntityConnect>().ConnectWith(result); newGameObject.AddComponent<EcsEntityConnect>().ConnectWith(result);
// self.GetPool<UnityGameObject>().Add(result.id) = // self.GetPool<UnityGameObject>().Add(result.id) =
#if UNITY_EDITOR #if UNITY_EDITOR
if (icon != GameObjectIcon.NONE) if (icon != GameObjectIcon.NONE)
{ {

View File

@ -25,7 +25,7 @@ namespace DCFApixels.DragonECS.Editors
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
set set
{ {
if(value) if (value)
_data[index >> OFFSET] |= (1 << (index & MOD_MASK)); _data[index >> OFFSET] |= (1 << (index & MOD_MASK));
else else
_data[index >> OFFSET] &= ~(1 << (index & MOD_MASK)); _data[index >> OFFSET] &= ~(1 << (index & MOD_MASK));