public Emitter(IParticleInitializer particleInitializer, int totalParticles) { this.totalParticles = totalParticles; indexOfLastAlive = -1; rnd = new Random(); emitCounter = 0; avgLife = 3; particles = new T[totalParticles]; for (int i = 0; i < totalParticles; i++) { particles[i] = new T(); } this.particleInitializer = particleInitializer; particleInitializer.SetAverageParticleLife(avgLife); Forces = new List <IApplyForce>(); }
public static bool TryCreateInitializer(string name, IKeyValueCollection initializerInfo, out IParticleInitializer initializer) { if (InitializerDictionary.TryGetValue(name, out var factory)) { initializer = factory(initializerInfo); return(true); } initializer = default; return(false); }
public UpdateInitializerCommand(InitializerType initializerType, IParticleInitializer updatedInstance) { _initializerType = initializerType; _updatedInstance = updatedInstance; }
protected static (ParticleCollection collection, int[] newIndices) RunInitializer(IParticleInitializer initializer) { var config = new EmitterConfig { Initializers = { initializer }, Trigger = MockTrigger().Object, InitialCapacity = 10, }; var allocator = new ParticleAllocator(100); var emitter = new ParticleEmitter(allocator, config); var collection = new ParticleCollection(emitter.Reservation) { ValidPropertiesToSet = initializer.PropertiesISet, }; var newIndices = new[] { 1, 3, 5, 7 }; initializer.InitializeParticles(emitter, collection, newIndices); return(collection, newIndices); }