moved the particle system and the entity component system into their own nuget packages

This commit is contained in:
Dylan Wilson
2017-03-07 22:08:31 +10:00
parent 1b6df14681
commit c236e6dfd5
71 changed files with 422 additions and 83 deletions
@@ -0,0 +1,35 @@
using System.Collections.Generic;
using MonoGame.Extended.Particles.Modifiers;
namespace MonoGame.Extended.Particles
{
using TPL = System.Threading.Tasks;
public abstract class ParticleModifierExecutionStrategy
{
public static ParticleModifierExecutionStrategy Serial = new SerialModifierExecutionStrategy();
public static ParticleModifierExecutionStrategy Parallel = new ParallelModifierExecutionStrategy();
internal abstract void ExecuteModifiers(IEnumerable<IModifier> modifiers, float elapsedSeconds,
ParticleBuffer.ParticleIterator iterator);
internal class SerialModifierExecutionStrategy : ParticleModifierExecutionStrategy
{
internal override void ExecuteModifiers(IEnumerable<IModifier> modifiers, float elapsedSeconds,
ParticleBuffer.ParticleIterator iterator)
{
foreach (var modifier in modifiers)
modifier.Update(elapsedSeconds, iterator.Reset());
}
}
internal class ParallelModifierExecutionStrategy : ParticleModifierExecutionStrategy
{
internal override void ExecuteModifiers(IEnumerable<IModifier> modifiers, float elapsedSeconds,
ParticleBuffer.ParticleIterator iterator)
{
TPL.Parallel.ForEach(modifiers, modifier => modifier.Update(elapsedSeconds, iterator.Reset()));
}
}
}
}