Esempio n. 1
0
        /// <inheritdoc />
        public override void Sort()
        {
            var i = 0;

            var lifeField = ParticlePool.GetField(ParticleFields.Life);

            if (lifeField.IsValid())
            {
                foreach (var particle in ParticlePool)
                {
                    if (particle.Get(lifeField) > 0)
                    {
                        particleList[i] = new SortedParticle(particle, 0);
                        i++;
                    }
                }
            }
            else
            {
                foreach (var particle in ParticlePool)
                {
                    particleList[i] = new SortedParticle(particle, 0);
                    i++;
                }
            }

            currentLivingParticles = i;
        }
Esempio n. 2
0
        public ParticleList GetSortedList(Vector3 depth)
        {
            var livingParticles = ParticlePool.LivingParticles;

            var lifeField = ParticlePool.GetField(fieldDesc);

            if (!lifeField.IsValid())
            {
                // Field is not valid - return an unsorted list
                return(new ParticleList(ParticlePool, livingParticles));
            }

            SortedParticle[] particleList = ArrayPool.Allocate(ParticlePool.ParticleCapacity);

            var i = 0;

            foreach (var particle in ParticlePool)
            {
                if (particle.Get(lifeField) > 0)
                {
                    particleList[i] = new SortedParticle(particle, 0);
                    i++;
                }
            }

            livingParticles = i;
            return(new ParticleList(ParticlePool, livingParticles, particleList));
        }
Esempio n. 3
0
        public unsafe ParticleList GetSortedList(Vector3 depth)
        {
            var livingParticles = ParticlePool.LivingParticles;

            var sortField = ParticlePool.GetField(fieldDesc);

            if (!sortField.IsValid())
            {
                // Field is not valid - return an unsorted list
                return(new ParticleList(ParticlePool, livingParticles));
            }

            SortedParticle[] particleList = ArrayPool.Allocate(ParticlePool.ParticleCapacity);

            var i = 0;

            foreach (var particle in ParticlePool)
            {
                uint order = particle.Get(sortField);
                particleList[i] = new SortedParticle(particle, *((float *)(&order)) * -1f);
                i++;
            }

            Array.Sort(particleList, 0, livingParticles);

            return(new ParticleList(ParticlePool, livingParticles, particleList));
        }
Esempio n. 4
0
        public override void Sort()
        {
            currentLivingParticles = ParticlePool.LivingParticles;
            var i = 0;

            var posField = ParticlePool.GetField(fieldDesc);

            if (posField.IsValid())
            {
                unsafe
                {
                    foreach (var particle in ParticlePool)
                    {
                        particleList[i] = new SortedParticle(particle, getIndex(particle.Get(posField)));
                        i++;
                    }
                }
            }
            else
            {
                foreach (var particle in ParticlePool)
                {
                    particleList[i] = new SortedParticle(particle, 0);
                    i++;
                }
            }

            // Sort the list
            Array.Sort(particleList, 0, currentLivingParticles); // GC problem? Switch to another solution if needed
        }
Esempio n. 5
0
        /// <inheritdoc />
        public override void Sort()
        {
            var i = 0;

            var lifeField = ParticlePool.GetField(ParticleFields.Life);

            if (lifeField.IsValid())
            {
                foreach (var particle in ParticlePool)
                {
                    if (particle.Get(lifeField) > 0)
                    {
                        particleList[i] = new SortedParticle(particle, 0);
                        i++;
                    }
                }
            }
            else
            {
                foreach (var particle in ParticlePool)
                {
                    particleList[i] = new SortedParticle(particle, 0);
                    i++;
                }
            }

            currentLivingParticles = i;
        }
Esempio n. 6
0
 int CompareTo(SortedParticle other)
 {
     return (this == other) ? 0 : (this < other) ? -1 : 1;
 }
Esempio n. 7
0
 int CompareTo(SortedParticle other)
 {
     return((this == other) ? 0 : (this < other) ? -1 : 1);
 }