Esempio n. 1
0
        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>();
        }
Esempio n. 2
0
        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;
 }
Esempio n. 4
0
        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);
        }