mirror of
https://github.com/DCFApixels/DragonECS-Unity.git
synced 2025-09-18 01:54:35 +08:00
refactoring
This commit is contained in:
parent
e728cacfc9
commit
cadf7abbd3
@ -1,6 +1,5 @@
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DCFApixels.DragonECS.Editors
|
||||
{
|
||||
|
@ -9,7 +9,7 @@ namespace DCFApixels.DragonECS.Editors
|
||||
[InitializeOnLoad]
|
||||
public static class EcsEditor
|
||||
{
|
||||
static EcsEditor()
|
||||
static EcsEditor()
|
||||
{
|
||||
colorBoxeStyles = new SparseArray<GUIStyle>();
|
||||
}
|
||||
|
@ -204,7 +204,7 @@ namespace DCFApixels.DragonECS
|
||||
{
|
||||
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;
|
||||
if (!_processeIndexes.TryGetValue(intr, out int index))
|
||||
@ -217,7 +217,7 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
data.name = EcsEditor.GetGenericName(intr);
|
||||
data.interfaceType = intr;
|
||||
data.systemsBitMask = new BitMask(_systems.Length);
|
||||
data.systemsBitMask = new BitMask(_systems.Length);
|
||||
}
|
||||
data = _processesList[index];
|
||||
data.systemsBitMask[i] = true;
|
||||
@ -266,7 +266,7 @@ namespace DCFApixels.DragonECS
|
||||
rect.y = _nameCellSize.y;
|
||||
rect.width = _nameCellSize.x;
|
||||
rect.height = _cellsize.x;
|
||||
rect.y -= _cellsize.y;
|
||||
rect.y -= _cellsize.y;
|
||||
for (int i = 0; i < _processesList.Count; i++)
|
||||
{
|
||||
lineRect = rect;
|
||||
@ -301,7 +301,7 @@ namespace DCFApixels.DragonECS
|
||||
lineRect.width = rectView.width;
|
||||
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.tooltip = i + " " + name;
|
||||
GUI.Label(rect, label, EditorStyles.miniBoldLabel);
|
||||
|
@ -1,12 +1,10 @@
|
||||
using DCFApixels.DragonECS.Unity.Debug;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DCFApixels.DragonECS
|
||||
{
|
||||
[DebugHide, DebugColor(DebugColor.Gray)]
|
||||
public class WorldDebugSystem : IEcsRunProcess
|
||||
public class WorldDebugSystem : IEcsRunProcess
|
||||
{
|
||||
private string _monitorName;
|
||||
private EcsWorld _ecsWorld;
|
||||
@ -72,8 +70,8 @@ namespace DCFApixels.DragonECS
|
||||
namespace Editors
|
||||
{
|
||||
using System.Linq;
|
||||
using UnityEditor;
|
||||
using System.Reflection;
|
||||
using UnityEditor;
|
||||
|
||||
[CustomEditor(typeof(WorldPoolsMonitor))]
|
||||
public class WorldPoolsMonitorEditor : Editor
|
||||
@ -87,30 +85,30 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
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>();
|
||||
|
||||
GUILayout.Label("", GUILayout.ExpandWidth(true));
|
||||
|
||||
float width = GUILayoutUtility.GetLastRect().width;
|
||||
|
||||
Vector3 newPoolBlockSize = _poolBlockMinSize;
|
||||
int widthCount = Mathf.Max(1, Mathf.Min((Mathf.FloorToInt(width / _poolBlockMinSize.x)), pools.Count()));
|
||||
newPoolBlockSize.x = width / widthCount;
|
||||
|
||||
int x = -1, y = 0;
|
||||
foreach (var pool in pools)
|
||||
{
|
||||
if(++x >= widthCount)
|
||||
{
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
|
||||
DrawPoolBlock(pool, new Rect(newPoolBlockSize.x * x, newPoolBlockSize.y * y, newPoolBlockSize.x, newPoolBlockSize.y));
|
||||
}
|
||||
GUILayout.EndScrollView();
|
||||
var pools = Target.world.AllPools.ToArray().Where(o => !o.IsNullOrDummy()).OfType<IEcsPool>();
|
||||
|
||||
GUILayout.Label("", GUILayout.ExpandWidth(true));
|
||||
|
||||
float width = GUILayoutUtility.GetLastRect().width;
|
||||
|
||||
Vector3 newPoolBlockSize = _poolBlockMinSize;
|
||||
int widthCount = Mathf.Max(1, Mathf.Min((Mathf.FloorToInt(width / _poolBlockMinSize.x)), pools.Count()));
|
||||
newPoolBlockSize.x = width / widthCount;
|
||||
|
||||
int x = -1, y = 0;
|
||||
foreach (var pool in pools)
|
||||
{
|
||||
if (++x >= widthCount)
|
||||
{
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
|
||||
DrawPoolBlock(pool, new Rect(newPoolBlockSize.x * x, newPoolBlockSize.y * y, newPoolBlockSize.x, newPoolBlockSize.y));
|
||||
}
|
||||
GUILayout.EndScrollView();
|
||||
}
|
||||
|
||||
|
||||
@ -121,16 +119,16 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
Color defaultContentColor = GUI.contentColor;
|
||||
GUI.contentColor = Color.black * 0.925f;
|
||||
|
||||
|
||||
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);
|
||||
progressBar.width = position.width;
|
||||
progressBar.center = position.center - Vector2.up * _poolBlockMinSize.y * 0.09f;
|
||||
|
||||
|
||||
|
||||
|
||||
Color mainColor = new Color(0.3f, 1f, 0f, 1f);
|
||||
var debugColor = pool.ComponentType.GetCustomAttribute<DebugColorAttribute>();
|
||||
if (debugColor != null)
|
||||
@ -138,22 +136,22 @@ namespace DCFApixels.DragonECS
|
||||
mainColor = debugColor.GetUnityColor();
|
||||
}
|
||||
Color backgroundColor = mainColor * 0.3f + Color.white * 0.2f;
|
||||
|
||||
|
||||
EditorGUI.DrawRect(progressBar, backgroundColor);
|
||||
|
||||
|
||||
progressBar.yMin = progressBar.yMax - ((float)count / capacity) * progressBar.height;
|
||||
|
||||
|
||||
GUIStyle textStyle0 = new GUIStyle(EditorStyles.miniBoldLabel);
|
||||
textStyle0.alignment = TextAnchor.MiddleCenter;
|
||||
|
||||
|
||||
Color foregroundColor = mainColor;
|
||||
EditorGUI.DrawRect(progressBar, foregroundColor);
|
||||
GUI.Label(progressBar, count.ToString(), textStyle0);
|
||||
|
||||
|
||||
GUIStyle textStyle1 = new GUIStyle(EditorStyles.miniBoldLabel);
|
||||
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;
|
||||
GUIStyle textStyle2 = new GUIStyle(EditorStyles.miniBoldLabel);
|
||||
textStyle2.wordWrap = true;
|
||||
@ -161,7 +159,7 @@ namespace DCFApixels.DragonECS
|
||||
string name = EcsEditor.GetGenericName(pool.ComponentType);
|
||||
GUIContent label = new GUIContent(name, $"{name} e:{count}");
|
||||
GUI.Label(AddMargin(position, -10f, 3f), label, textStyle2);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private Rect AddMargin(Rect rect, Vector2 value)
|
||||
|
@ -1,6 +1,6 @@
|
||||
namespace DCFApixels.DragonECS
|
||||
{
|
||||
public static class EcsUnityConsts
|
||||
public static class EcsUnityConsts
|
||||
{
|
||||
public const string INFO_MARK = "[i]";
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ namespace DCFApixels.DragonECS
|
||||
{
|
||||
if (item is ITemplateComponentGizmos g)
|
||||
g.OnGizmos(transform, ITemplateComponentGizmos.Mode.Always);
|
||||
}
|
||||
}
|
||||
}
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
|
@ -9,7 +9,7 @@ namespace DCFApixels.DragonECS
|
||||
using UnityEditor;
|
||||
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 TooltipIconRect = new Rect(0f, 0f, 15f, 15f);
|
||||
@ -31,7 +31,7 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
removeButtonStyle = new GUIStyle(EditorStyles.linkLabel);
|
||||
removeButtonStyle.alignment = TextAnchor.MiddleCenter;
|
||||
|
||||
|
||||
removeButtonStyle.normal = tmpstylebase.normal;
|
||||
removeButtonStyle.hover = tmpStyle.normal;
|
||||
removeButtonStyle.active = tmpStyle.normal;
|
||||
@ -44,7 +44,7 @@ namespace DCFApixels.DragonECS
|
||||
genericMenu = new GenericMenu();
|
||||
|
||||
var dummies = TemplateBrowsableTypeCache.Dummies;
|
||||
foreach ( var dummy in dummies )
|
||||
foreach (var dummy in dummies)
|
||||
{
|
||||
string name, description;
|
||||
if (dummy is ITemplateComponentName browsableName)
|
||||
@ -137,7 +137,7 @@ namespace DCFApixels.DragonECS
|
||||
private void DrawComponentData(SerializedProperty componentRefProp, int index)
|
||||
{
|
||||
ITemplateComponent browsable = componentRefProp.managedReferenceValue as ITemplateComponent;
|
||||
if(browsable == null)
|
||||
if (browsable == null)
|
||||
{
|
||||
DrawDamagedComponent(componentRefProp, index);
|
||||
return;
|
||||
@ -173,7 +173,7 @@ namespace DCFApixels.DragonECS
|
||||
Color panelColor = customInitializer != null ? customInitializer.Color : EcsDebugUtility.GetColorRGB(initializerType).ToUnityColor();
|
||||
|
||||
GUILayout.BeginHorizontal();
|
||||
|
||||
|
||||
GUILayout.BeginVertical(EcsEditor.GetStyle(panelColor, 0.2f));
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
@ -198,7 +198,7 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
GUILayout.EndVertical();
|
||||
GUILayout.Label("", GUILayout.Width(removeButtonRect.width));
|
||||
|
||||
|
||||
if (GUI.Button(removeButtonRect, "x", removeButtonStyle))
|
||||
OnRemoveComponentAt(index);
|
||||
|
||||
|
@ -1,6 +1,4 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace DCFApixels.DragonECS
|
||||
namespace DCFApixels.DragonECS
|
||||
{
|
||||
public interface ITemplate
|
||||
{
|
||||
@ -9,7 +7,7 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
public interface ITemplateInternal : ITemplate
|
||||
{
|
||||
// internal ITemplateBrowsable[] Components { get; set; }
|
||||
// internal ITemplateBrowsable[] Components { get; set; }
|
||||
internal string ComponentsPropertyName { get; }
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
using DCFApixels.DragonECS.Editors;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
@ -51,7 +50,7 @@ namespace DCFApixels.DragonECS
|
||||
int iBacktick = friendlyName.IndexOf('`');
|
||||
if (iBacktick > 0)
|
||||
friendlyName = friendlyName.Remove(iBacktick);
|
||||
|
||||
|
||||
friendlyName += "/" + friendlyName;
|
||||
friendlyName += "<";
|
||||
Type[] typeParameters = type.GetGenericArguments();
|
||||
@ -122,7 +121,7 @@ namespace DCFApixels.DragonECS
|
||||
Type interfaceType = typeof(ITemplateComponent);
|
||||
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)));
|
||||
|
||||
@ -130,7 +129,7 @@ namespace DCFApixels.DragonECS
|
||||
{
|
||||
if (t.IsSubclassOf(typeof(TemplateComponentInitializer<>)))
|
||||
{
|
||||
if(t.GetCustomAttribute<SerializableAttribute>() != null)
|
||||
if (t.GetCustomAttribute<SerializableAttribute>() != null)
|
||||
types.Add(t);
|
||||
}
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
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>();
|
||||
s.unityGameObjects.Del(oldE);
|
||||
@ -115,8 +115,8 @@ namespace DCFApixels.DragonECS
|
||||
GUILayout.Box("Connected", _greenStyle, GUILayout.ExpandWidth(true));
|
||||
else
|
||||
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);
|
||||
else
|
||||
EditorGUILayout.IntField(0);
|
||||
@ -124,10 +124,10 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
base.OnInspectorGUI();
|
||||
|
||||
if(GUILayout.Button("Autoset Templates"))
|
||||
if (GUILayout.Button("Autoset Templates"))
|
||||
{
|
||||
Target.SetTemplates_Editor(Target.GetComponents<EntityTemplate>());
|
||||
|
||||
|
||||
EditorUtility.SetDirty(target);
|
||||
}
|
||||
if (GUILayout.Button("Autoset Templates Cascade"))
|
||||
|
@ -65,7 +65,7 @@ namespace DCFApixels.DragonECS
|
||||
entlong result = self.GetEntityLong(self.NewEmptyEntity());
|
||||
GameObject newGameObject = new GameObject(name);
|
||||
newGameObject.AddComponent<EcsEntityConnect>().ConnectWith(result);
|
||||
// self.GetPool<UnityGameObject>().Add(result.id) =
|
||||
// self.GetPool<UnityGameObject>().Add(result.id) =
|
||||
#if UNITY_EDITOR
|
||||
if (icon != GameObjectIcon.NONE)
|
||||
{
|
||||
|
@ -25,7 +25,7 @@ namespace DCFApixels.DragonECS.Editors
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
set
|
||||
{
|
||||
if(value)
|
||||
if (value)
|
||||
_data[index >> OFFSET] |= (1 << (index & MOD_MASK));
|
||||
else
|
||||
_data[index >> OFFSET] &= ~(1 << (index & MOD_MASK));
|
||||
|
Loading…
Reference in New Issue
Block a user