Example #1
0
        protected override void CreateTexture()
        {
            if (ControlTexture != null && !ControlTexture.IsDisposed && Size != TextureSize)
            {
                ControlTexture.Dispose();
            }

            if (ControlTexture == null || ControlTexture.IsDisposed)
            {
                DXManager.ControlList.Add(this);
                ControlTexture = new Texture(DXManager.Device, Size.Width, Size.Height, 1, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default);
                TextureSize    = Size;
            }
            Surface oldSurface = DXManager.CurrentSurface;
            Surface surface    = ControlTexture.GetSurfaceLevel(0);

            DXManager.SetSurface(surface);

            DXManager.Device.Clear(ClearFlags.Target, BackColour.ToRawColorBGRA(), 0, 0);

            BeforeDrawControl();
            DrawChildControls();
            AfterDrawControl();

            DXManager.Sprite.Flush();


            DXManager.SetSurface(oldSurface);
            TextureValid = true;
            surface.Dispose();
        }
Example #2
0
        protected virtual void CreateTexture()
        {
            if (ControlTexture == null || ControlTexture.IsDisposed)
            {
                DXManager.ControlList.Add(this);
                ControlTexture = new Texture(DXManager.Device, Size.Width, Size.Height, 1, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default);
                TextureSize    = Size;
            }

            Surface oldSurface = DXManager.CurrentSurface;
            Surface surface    = ControlTexture.GetSurfaceLevel(0);

            DXManager.SetSurface(surface);
            DXManager.Device.Clear(ClearFlags.Target, BackColour.ToRawColorBGRA(), 0, 0);
            DXManager.SetSurface(oldSurface);

            TextureValid = true;
            surface.Dispose();
        }
        public Mesh GenerateTerrain()
        {
            PerlinNoise   noise    = new PerlinNoise(NoiseSeed);
            List <Vertex> vertices = new List <Vertex>();
            List <int>    indices  = new List <int>();

            for (int i = 0; i < (TerrainRadius * 2) + 1; i++)
            {
                for (int j = 0; j < (TerrainRadius * 2) + 1; j++)
                {
                    float vertexY = Multiplier * noise.Noise(i, j, TerrainRadius * 2 + 1, TerrainRadius * 2 + 1, Frequency);
                    vertexY = Math.Clamp(vertexY, LowerCutoff, UpperCutoff) * FuncMultiplier.GetValue(i - TerrainRadius, j - TerrainRadius);
                    vertices.Add(new Vertex {
                        Position = new Vector3(i - TerrainRadius, vertexY, j - TerrainRadius),
                        Colour   = Vector3.Lerp(FrontColour.ToVector(), BackColour.ToVector(), (float)i / TerrainRadius)
                    });

                    if (i > 0 && j > 0)
                    {
                        int currentPoint     = i * (TerrainRadius * 2 + 1) + j;
                        int prevPoint        = currentPoint - 1;
                        int prevRowPoint     = (i - 1) * (TerrainRadius * 2 + 1) + j;
                        int prevRowPrevPoint = prevRowPoint - 1;

                        // Adding a new square.
                        indices.Add(currentPoint);
                        indices.Add(prevPoint);
                        indices.Add(prevRowPoint);

                        indices.Add(prevRowPoint);
                        indices.Add(prevPoint);
                        indices.Add(prevRowPrevPoint);
                    }
                }
            }

            return(new Mesh(vertices.ToArray(), indices.ToArray(), Matrix4.CreateScale(Scale, 1, Scale)));
        }