Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="x"></param>
        private int ParticleFlow()
        {
            Engine.Color.ColorVariance cv = new Color.ColorVariance(t_particles[0].Pixel);
            cv.SetFrequencies(500);
            cv.SetRanges(30);

            double life = 0;

            do
            {
                cv.Step();

                life = 0;

                for (int y = 0; y < t_particles.Length; y++)
                {
                    t_particles[y].Pixel = cv.ColorVariation;
                    t_particles[y].Draw(t_imageSource);

                    if (t_particles[y].Life < 0)
                    {
                        continue;
                    }

                    Engine.Calc.Vector pos = t_particles[y].Position;

                    if (pos.X < 0 || pos.X >= t_imageSource.Width)
                    {
                        t_particles[y].Die();
                        life += 0;
                        continue;
                    }

                    if (pos.Y < 0 || pos.Y >= t_imageSource.Height)
                    {
                        t_particles[y].Die();
                        life += 0;
                        continue;
                    }

                    t_particles[y].Move(t_flowField[(int)t_particles[y].Position.X, (int)t_particles[y].Position.Y]);
                    life += t_particles[y].Life;
                }
            } while (life > t_particleLife);

            return(0);
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        private int ParticleFlow(int start, int end, Engine.Threading.ParamList lst)
        {
            Engine.Color.ColorVariance cv = new Color.ColorVariance(t_particles[0].Pixel);
            cv.SetFrequencies(500);
            cv.SetRanges(30);

            double life = 0;

            do
            {
                life = 0;

                for (int i = start; i < end; i++)
                {
                    t_particles[i].Pixel = cv.ColorVariation;
                    t_particles[i].Draw(t_imageProcessed);

                    if (t_particles[i].Life < 0)
                    {
                        continue;
                    }

                    Engine.Calc.Vector pos = t_particles[i].Position;

                    if (pos.X < 0 || pos.X >= t_imageProcessed.Width)
                    {
                        t_particles[i].Die();
                        continue;
                    }

                    if (pos.Y < 0 || pos.Y >= t_imageProcessed.Height)
                    {
                        t_particles[i].Die();
                        continue;
                    }

                    t_particles[i].Move(t_flowField[(int)t_particles[i].Position.X, (int)t_particles[i].Position.Y]);
                    life += t_particles[i].Life;
                }
            } while (life > t_particleLife);

            return(0);
        }