#if UNITY_JOBS
using Svelto.DataStructures;
using Unity.Jobs;
using Svelto.Common;
namespace Svelto.ECS.SveltoOnDOTS
{
///
/// Note sorted jobs run in serial
///
///
///
public abstract class SortedJobifiedEnginesGroup : IJobifiedEngine
where SequenceOrder : struct, ISequenceOrder where Interface : class, IJobifiedEngine
{
protected SortedJobifiedEnginesGroup(FasterList engines)
{
_name = "SortedJobifiedEnginesGroup - " + this.GetType().Name;
_instancedSequence = new Sequence(engines);
}
public JobHandle Execute(JobHandle inputHandles)
{
var sequenceItems = _instancedSequence.items;
JobHandle combinedHandles = inputHandles;
using (var profiler = new PlatformProfiler(_name))
{
for (var index = 0; index < sequenceItems.count; index++)
{
var engine = sequenceItems[index];
using (profiler.Sample(engine.name))
combinedHandles = engine.Execute(combinedHandles);
}
}
return combinedHandles;
}
public string name => _name;
readonly string _name;
readonly Sequence _instancedSequence;
}
public abstract class
SortedJobifiedEnginesGroup : IJobifiedGroupEngine
where SequenceOrder : struct, ISequenceOrder where Interface : class, IJobifiedEngine
{
protected SortedJobifiedEnginesGroup(FasterList engines)
{
_name = "SortedJobifiedEnginesGroup - " + this.GetType().Name;
_instancedSequence = new Sequence(engines);
}
public JobHandle Execute(JobHandle combinedHandles, ref Parameter param)
{
var sequenceItems = _instancedSequence.items;
using (var profiler = new PlatformProfiler(_name))
{
for (var index = 0; index < sequenceItems.count; index++)
{
var engine = sequenceItems[index];
using (profiler.Sample(engine.name))
combinedHandles = engine.Execute(combinedHandles, ref param);
}
}
return combinedHandles;
}
public string name => _name;
readonly string _name;
readonly Sequence _instancedSequence;
}
}
#endif