using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DCFApixels.DragonECS { public class InjectProcessor : IDo<_PreInit> { private T _injectedData; public InjectProcessor(T injectedData) { _injectedData = injectedData; } void IDo<_PreInit>.Do(EcsSession session) { var messenger = session.GetMessenger<_OnInject>(); messenger.Send(new _OnInject(_injectedData)); messenger.Destroy(); } } public static class InjectProcessorExstensions { public static EcsSession Inject(this EcsSession self, T data) { self.Add(new InjectProcessor(data)); return self; } public static EcsSession Inject(this EcsSession self, A dataA, B dataB) { self.Inject(dataA).Inject(dataB); return self; } public static EcsSession Inject(this EcsSession self, A dataA, B dataB, C dataC, D dataD) { self.Inject(dataA).Inject(dataB).Inject(dataC).Inject(dataD); return self; } public static EcsSession Inject(this EcsSession self, A dataA, B dataB, C dataC, D dataD, E dataE) { self.Inject(dataA).Inject(dataB).Inject(dataC).Inject(dataD).Inject(dataE); return self; } } }