Esempio n. 1
0
        private void SetupCircles()
        {
            int maxLines = 500000;

            fLines = new DynamicPrimitiveLine(fSpriteBatch.GraphicsDevice);
            bool first = true;

            while (fLines.Lines < maxLines)
            {
                //int w = Game.GraphicsDevice.Viewport.Width;
                //int h = Game.GraphicsDevice.Viewport.Height;
                float x        = (float)(1500.0f * (fRandom.NextDouble() - 0.5f));
                float y        = (float)(1500.0f * (fRandom.NextDouble() - 0.5f));
                int   radius   = fRandom.Next(400) + 10;
                int   segments = 50;
                byte  r        = (byte)fRandom.Next(256);
                byte  g        = (byte)fRandom.Next(256);
                byte  b        = (byte)fRandom.Next(256);
                byte  a        = 255;
                if (first)
                {
                    x      = 0;
                    y      = 0;
                    radius = 500;
                    r      = 255;
                    g      = 255;
                    b      = 255;
                    first  = false;
                }
                while (fLines.Lines < maxLines && radius > 20)
                {
                    Color color = new Color(r, g, b, a);
                    fLines.AddCircle(x, y, 0, radius, segments, color);
                    radius--;
                    x++;
                    if (r > 3)
                    {
                        r -= 3;
                    }
                    if (g > 3)
                    {
                        g -= 3;
                    }
                    if (b > 3)
                    {
                        b -= 3;
                    }
                }
            }
        }
Esempio n. 2
0
        private void InitLines()
        {
            fLinesChanged = false;

            fLines = new DynamicPrimitiveLine(fSpriteBatch.GraphicsDevice);

            int   maxLines = 1000000;
            float rStep    = 0.3f;
            int   segments = 500;

            if (!fManyLines)
            {
                maxLines = 20000;
                rStep    = 30.0f;
            }

            float radius1 = 0;
            Color color1a = GetRandomColor();
            Color color1b = GetRandomColor();
            Color color2a = GetRandomColor();
            Color color2b = GetRandomColor();

            int colorStep = 0;

            while (fLines.Lines < maxLines)
            {
                Color colorA = GetColor(color1a, color2a, colorStep / 100.0f);
                Color colorB = GetColor(color1b, color2b, colorStep / 100.0f);

                float radius2 = radius1 + rStep;

                fLines.AddCircle(0, 0, 0, radius1, radius2, segments, colorA, colorB);

                colorStep++;
                if (colorStep > 100)
                {
                    color1a   = color2a;
                    color1b   = color2b;
                    color2a   = GetRandomColor();
                    color2b   = GetRandomColor();
                    colorStep = 0;
                }
                radius1 = radius2;
            }
        }
Esempio n. 3
0
        private void UpdateScale()
        {
            InitializeTransform();
            InitializeEffect();
            if (fSpriteBatch == null)
            {
                return;
            }

            int maxLines = 1000000;

            fLines = new DynamicPrimitiveLine(fSpriteBatch.GraphicsDevice);

            CircleData circleTo    = CreateRandomCircle();
            CircleData circleFrom  = null;
            int        currentStep = 0;
            int        maxSteps    = 0;

            while (fLines.Lines < maxLines)
            {
                CircleData currentCircle;
                currentStep++;
                if (currentStep >= maxSteps)
                {
                    circleFrom    = circleTo;
                    circleTo      = CreateRandomCircle();
                    currentStep   = 0;
                    maxSteps      = fRandom.Next(200) + 1;
                    currentCircle = circleFrom;
                }
                else
                {
                    float f = Convert.ToSingle(currentStep) / maxSteps;
                    currentCircle = CalculateAverageCircle(circleFrom, circleTo, f);
                }
                Color c1 = new Color(currentCircle.R1, currentCircle.G1, currentCircle.B1, (byte)255);
                Color c2 = new Color(currentCircle.R2, currentCircle.G2, currentCircle.B2, (byte)255);
                fLines.AddCircle(currentCircle.X, currentCircle.Y, 0,
                                 currentCircle.Radius, currentCircle.Radius,
                                 currentCircle.Segments, c1, c2);
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Initializes the lines
 /// </summary>
 private void InitializeLines()
 {
     fLines = new DynamicPrimitiveLine(GraphicsDevice);
     for (int i = 0; i < 256; i++)
     {
         fLines.AddCircle(TARGET_WIDTH / 2, TARGET_HEIGHT / 2, 0, i / 5.0f, 50, new Color(i, 255 - i, 255 - i, 255));
     }
     for (int i = 0; i < 5; i++)
     {
         Color color = new Color(255 - i * 25, 0, 0, 255);
         fLines.AddLine(
             new VertexPositionColor(new Vector3(i, i, 0), color),
             new VertexPositionColor(new Vector3(TARGET_WIDTH - i - 1, i, 0), color));
         fLines.AddLine(
             new VertexPositionColor(new Vector3(TARGET_WIDTH - i - 1, i, 0), color),
             new VertexPositionColor(new Vector3(TARGET_WIDTH - i - 1, TARGET_HEIGHT - i - 1, 0), color));
         fLines.AddLine(
             new VertexPositionColor(new Vector3(TARGET_WIDTH - i - 1, TARGET_HEIGHT - i - 1, 0), color),
             new VertexPositionColor(new Vector3(i, TARGET_HEIGHT - i - 1, 0), color));
         fLines.AddLine(
             new VertexPositionColor(new Vector3(i, TARGET_HEIGHT - i - 1, 0), color),
             new VertexPositionColor(new Vector3(i, i, 0), color));
     }
 }