Esempio n. 1
0
        public void Draw(float delta)
        {
            PSprite last = null;

            Parallel.For(completed, completed + imagesPerFrame + 1, i =>
            {
                if (i < imageCount)
                {
                    var input = PSprite.FromFilePath(@"E\image-" + (i + 1).ToString("00000") + ".png");
                    input     = Convert(input);
                    input.Save(@"E\out-" + i.ToString("00000") + ".png");
                    last = input;
                }
                else
                {
                    Console.WriteLine("A");
                }
            });

            if (last != null)
            {
                Art.DrawImage(last, 0, 0, Width, Height);
            }

            completed += imagesPerFrame;
        }
Esempio n. 2
0
        public void Setup()
        {
            var i    = 1;
            var name = "image-" + i.ToString("00000") + ".png";

            while (File.Exists(@"E\" + name))
            {
                imageCount++;
                i++;
                name = "image-" + i.ToString("00000") + ".png";
            }

            Art.DrawImage(Convert(PSprite.FromFilePath("b.png")), 0, 0, Width, Height);
        }
Esempio n. 3
0
        public void Draw(float delta)
        {
            var spritePath = Images[i];
            var sprite     = PSprite.FromFilePath(spritePath);
            var pixels     = sprite.Art.GetPixels();
            //for (var i = 0; i < Width * Height; i++)
            //{
            //    var index = (i * 4) + 2;
            //    pixels[index] = 0;
            //}
            var max = Width * Height * 4;

            for (var index = 2; index < max; index += 4)
            {
                pixels[index] = 0;
            }
            sprite.Art.SetPixels(pixels);

            sprite.Save($@"LargestStar\OutImages\{i:000000}.png");
            Art.DrawImage(sprite, 0, 0, Width, Height);

            i++;
        }
Esempio n. 4
0
        public override void Draw(float delta)
        {
            //Title($"FPS: {Timing.ActualFramesPerSecond}/{Timing.TargetFramesPerSecond}");
            Art.Background(Paint.Black);

            var mag = 0f;

            Particles.ForEach(p => mag += p.Velocity.SquareMagnitude);
            mag /= Particles.Count;
            mag *= 1;

            var frame  = new Sprite(Width, Height);
            var pixels = frame.Art.GetPixels();

            foreach (var p in Particles)
            {
                //p.Position = new Vector2()
                //{
                //    X = p.Position.X % Width,
                //    Y = p.Position.Y % Height,
                //};

                //p.Position = new Vector2()
                //{
                //    X = p.Position.X < 0 ? p.Position.X + Width - 1 : p.Position.X,
                //    Y = p.Position.Y < 0 ? p.Position.Y + Height - 1 : p.Position.Y,
                //};

                var pass = ((int)p.Position.X >= Width ||
                            (int)p.Position.Y >= Height ||
                            (int)p.Position.X < 0 ||
                            (int)p.Position.Y < 0);

                if (!pass)
                {
                    var pixelIndex = ((int)p.Position.X + ((int)p.Position.Y * Width)) * 4;

                    var color = (p.Velocity.SquareMagnitude / mag) * 255;
                    color = color > 255 ? 255 : color < 0 ? 0 : color;

                    pixels[pixelIndex]     = 255;
                    pixels[pixelIndex + 1] = 255;
                    pixels[pixelIndex + 2] = 255;
                    pixels[pixelIndex + 3] = 255;
                }

                p.Position += p.Velocity * delta;

                //if (MouseIsDown)
                //{
                var positions = new List <Vector2>()
                {
                    MousePosition,
                    //new Vector2(0, 0),
                };
                var forces = positions.ConvertAll(
                    p2 =>
                    Vector2.Right.Rotate(Vector2.Zero, p.Position.AngleToRadians(p2)) / (p.Position.DistanceFrom(p2).Square() / 1000)
                    );

                var average = Vector2.Zero;
                foreach (var f in forces)
                {
                    average += f;
                }
                average /= forces.Count;
                average *= 10;

                p.Velocity += (average * Timing.TargetFramesPerSecond) * delta;
                //}

                p.Velocity *= 0.99f;
            }
            frame.Art.SetPixels(pixels);

            PreviousFrames.Add(frame);
            if (PreviousFrames.Count > TailSize)
            {
                PreviousFrames.RemoveAt(0);
            }

            foreach (var f in PreviousFrames)
            {
                Art.DrawImage(f, 0, 0, Width, Height);
            }

            //var magSum = 0f;
            //Particles.ForEach(p => magSum += p.Velocity.Magnitude);
            //magSum /= Particles.Count;
            //Title(magSum);

            //Art.Fill(Paint.White);
            //Art.Stroke(Paint.Black);
            //Art.StrokeWeight(1f);
            //Art.TextFont("Airal", 36f);
            //Art.Text(MousePosition + " " + MouseIsDown, 300, 300);
        }