2024-06-26 00:07:31 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Runtime.Serialization;
|
|
|
|
|
|
2024-06-26 00:14:58 +08:00
|
|
|
|
namespace DCFApixels.DragonECS
|
2024-06-26 00:07:31 +08:00
|
|
|
|
{
|
|
|
|
|
[Serializable]
|
|
|
|
|
[DataContract]
|
|
|
|
|
public class EcsPipelineTemplate : IEcsModule
|
|
|
|
|
{
|
|
|
|
|
[DataMember] public string[] layers;
|
|
|
|
|
[DataMember] public SystemRecord[] systems;
|
2024-06-26 01:35:40 +08:00
|
|
|
|
void IEcsModule.Import(EcsPipeline.Builder b)
|
2024-06-26 00:07:31 +08:00
|
|
|
|
{
|
|
|
|
|
b.Layers.MergeWith(layers);
|
|
|
|
|
foreach (var s in systems)
|
|
|
|
|
{
|
2024-06-26 01:35:40 +08:00
|
|
|
|
if (s.system == null) { continue; }
|
|
|
|
|
|
2024-06-26 00:07:31 +08:00
|
|
|
|
int? sortOrder = s.isCustomSortOrder ? s.sortOrder : default(int?);
|
|
|
|
|
if (s.isUnique)
|
|
|
|
|
{
|
|
|
|
|
b.AddUnique(s.system, s.layer, sortOrder);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
b.Add(s.system, s.layer, sortOrder);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-26 01:35:40 +08:00
|
|
|
|
[Serializable]
|
|
|
|
|
[DataContract]
|
|
|
|
|
public struct SystemRecord
|
|
|
|
|
{
|
|
|
|
|
[DataMember] public IEcsProcess system;
|
|
|
|
|
[DataMember] public string layer;
|
|
|
|
|
[DataMember] public int sortOrder;
|
|
|
|
|
[DataMember] public bool isCustomSortOrder;
|
|
|
|
|
[DataMember] 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.layer = layer;
|
|
|
|
|
this.sortOrder = sortOrder.HasValue ? sortOrder.Value : 0;
|
|
|
|
|
isCustomSortOrder = sortOrder.HasValue;
|
|
|
|
|
this.isUnique = isUnique;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-06-26 00:07:31 +08:00
|
|
|
|
}
|
|
|
|
|
}
|