This commit is contained in:
Mikhail 2024-09-08 21:36:24 +08:00
parent 0fd029f711
commit 20e96faccc
2 changed files with 15 additions and 38 deletions

View File

@ -1,6 +1,7 @@
#if UNITY_EDITOR #if UNITY_EDITOR
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection;
using UnityEditor; using UnityEditor;
using UnityEditor.Build; using UnityEditor.Build;
using UnityEngine; using UnityEngine;
@ -21,16 +22,7 @@ namespace DCFApixels.DragonECS.Unity.Editors
private void InitDefines() private void InitDefines()
{ {
string symbolsString = PlayerSettings.GetScriptingDefineSymbols(NamedBuildTarget.Standalone); string symbolsString = PlayerSettings.GetScriptingDefineSymbols(NamedBuildTarget.Standalone);
_defineSymbols = new List<DefineSymbolsInfo>() _defineSymbols = new List<DefineSymbolsInfo>(typeof(EcsDefines).GetFields(BindingFlags.Static | BindingFlags.Public).Select(o => new DefineSymbolsInfo(o.Name, false)));
{
nameof(EcsConsts.DISABLE_POOLS_EVENTS),
nameof(EcsConsts.ENABLE_DRAGONECS_DEBUGGER),
nameof(EcsConsts.ENABLE_DRAGONECS_ASSERT_CHEKS),
nameof(EcsConsts.REFLECTION_DISABLED),
nameof(EcsConsts.DISABLE_DEBUG),
nameof(EcsConsts.ENABLE_DUMMY_SPAN),
nameof(EcsConsts.DISABLE_CATH_EXCEPTIONS),
};
for (int i = 0; i < _defineSymbols.Count; i++) for (int i = 0; i < _defineSymbols.Count; i++)
{ {
var symbol = _defineSymbols[i]; var symbol = _defineSymbols[i];

View File

@ -22,7 +22,7 @@ namespace DCFApixels.DragonECS
private string[] _layers = _defaultLayers.ToArray(); private string[] _layers = _defaultLayers.ToArray();
[SerializeField] [SerializeField]
private SystemRecord[] _systems; private Record[] _systems;
[SerializeField] [SerializeField]
[SerializeReference] [SerializeReference]
@ -34,17 +34,9 @@ namespace DCFApixels.DragonECS
b.Layers.MergeWith(_layers); b.Layers.MergeWith(_layers);
foreach (var s in _systems) foreach (var s in _systems)
{ {
if (s.system == null) { continue; } if (s.target == null) { continue; }
int? sortOrder = s.isCustomSortOrder ? s.sortOrder : default(int?); b.Add(s.target, s.parameters);
if (s.isUnique)
{
b.AddUnique(s.system, s.layer, sortOrder);
}
else
{
b.Add(s.system, s.layer, sortOrder);
}
} }
} }
@ -53,11 +45,11 @@ namespace DCFApixels.DragonECS
EcsPipelineTemplate result = new EcsPipelineTemplate(); EcsPipelineTemplate result = new EcsPipelineTemplate();
result.layers = new string[_layers.Length]; result.layers = new string[_layers.Length];
Array.Copy(_layers, result.layers, _layers.Length); Array.Copy(_layers, result.layers, _layers.Length);
result.systems = new EcsPipelineTemplate.SystemRecord[_systems.Length]; result.systems = new EcsPipelineTemplate.AddCommand[_systems.Length];
for (int i = 0; i < result.systems.Length; i++) for (int i = 0; i < result.systems.Length; i++)
{ {
ref var s = ref _systems[i]; ref var s = ref _systems[i];
result.systems[i] = new EcsPipelineTemplate.SystemRecord(s.system, s.layer, s.NullableSortOrder, s.isUnique); result.systems[i] = new EcsPipelineTemplate.AddCommand(s.target, s.parameters);
} }
return result; return result;
} }
@ -66,11 +58,11 @@ namespace DCFApixels.DragonECS
{ {
_layers = new string[template.layers.Length]; _layers = new string[template.layers.Length];
Array.Copy(template.layers, _layers, template.layers.Length); Array.Copy(template.layers, _layers, template.layers.Length);
_systems = new SystemRecord[template.systems.Length]; _systems = new Record[template.systems.Length];
for (int i = 0; i < _systems.Length; i++) for (int i = 0; i < _systems.Length; i++)
{ {
ref var s = ref template.systems[i]; ref var s = ref template.systems[i];
_systems[i] = new SystemRecord(s.system, s.layer, s.NullableSortOrder, s.isUnique); _systems[i] = new Record(s.target, s.parameters);
} }
} }
@ -128,23 +120,16 @@ namespace DCFApixels.DragonECS
} }
[Serializable] [Serializable]
public struct SystemRecord public struct Record
{ {
[SerializeReference] [SerializeReference]
[ReferenceButton] [ReferenceButton]
public IEcsProcess system; public object target;
public string layer; public AddParams parameters;
public int sortOrder; public Record(object target, AddParams parameters)
public bool isCustomSortOrder;
public bool isUnique;
public int? NullableSortOrder { get { return isCustomSortOrder ? sortOrder : default(int?); } }
public SystemRecord(IEcsProcess system, string layer, int? sortOrder, bool isUnique)
{ {
this.system = system; this.target = target;
this.layer = layer; this.parameters = parameters;
this.sortOrder = sortOrder.HasValue ? sortOrder.Value : 0;
isCustomSortOrder = sortOrder.HasValue;
this.isUnique = isUnique;
} }
} }
} }