Пример #1
0
 protected override void CreateGeometry()
 {
     //var texture = new TextureCuboidWrapper();
     //var bounds = new Rectangle(0, 0, 2, 1);
     //texture.AddSide(CuboidSide.Top, new TextureRectangle(new Rectangle(0, 0, 1, 1), bounds));
     //texture.AddSide(new[] { CuboidSide.Bottom, CuboidSide.Left, CuboidSide.Right, CuboidSide.Front, CuboidSide.Back },
     //    new TextureRectangle(new Rectangle(0, 0, 1, 1), bounds));
     Geometry.AddVertices(CuboidComposer.Create(1f));
 }
Пример #2
0
        protected override void CreateGeometry()
        {
            var cuboidTexture = new GeometryTextureCuboidWrapper();

            cuboidTexture.AddSide(
                new[] { CuboidSide.Left, CuboidSide.Right, CuboidSide.Top, CuboidSide.Bottom }, new GeometryTextureIndex(1));

            Geometry.AddVertices(CuboidComposer.Create(1f, 1f, 0.5f, cuboidTexture));
        }
Пример #3
0
        protected override void CreateGeometry()
        {
            var sideTexture = new GeometryTextureIndex(1);
            var topTexture  = new GeometryTextureMultiplier(_size);

            var cuboidTexture = new GeometryTextureCuboidWrapper();

            cuboidTexture.AddSide(new[] { CuboidSide.Back, CuboidSide.Front, CuboidSide.Left, CuboidSide.Right }, sideTexture);
            cuboidTexture.AddSide(new[] { CuboidSide.Top, CuboidSide.Bottom }, topTexture);

            Geometry.AddVertices(CuboidComposer.Create(_size.X, 0.2f, _size.Y, cuboidTexture));
        }
Пример #4
0
        protected override void CreateGeometry()
        {
            var side1Texture = new GeometryTextureMultiplier(new Vector2(_size.X, _size.Y));
            var side2Texture = new GeometryTextureMultiplier(new Vector2(1, _size.Y));
            var topTexture   = new GeometryTextureMultiplier(new Vector2(_size.X, 1), 1);

            var cuboidTexture = new GeometryTextureCuboidWrapper();

            cuboidTexture.AddSide(new[] { CuboidSide.Back, CuboidSide.Front }, side1Texture);
            cuboidTexture.AddSide(new[] { CuboidSide.Left, CuboidSide.Right }, side2Texture);
            cuboidTexture.AddSide(new[] { CuboidSide.Top, CuboidSide.Bottom }, topTexture);

            Geometry.AddVertices(CuboidComposer.Create(_size.X, _size.Y, 1f, cuboidTexture));
        }
Пример #5
0
        protected override void CreateGeometry()
        {
            var side1Texture = new GeometryTextureMultiplier(new Vector2(3, 2));
            var side2Texture = new GeometryTextureMultiplier(new Vector2(2, 2));
            var doorTexture  = new GeometryTextureIndex(1);
            var topTexture   = new GeometryTextureMultiplier(new Vector2(8, 4));

            var cuboidTexture = new GeometryTextureCuboidWrapper();

            cuboidTexture.AddSide(new[] { CuboidSide.Back, CuboidSide.Front }, side1Texture);
            cuboidTexture.AddSide(new[] { CuboidSide.Right }, side2Texture);
            cuboidTexture.AddSide(new[] { CuboidSide.Left }, doorTexture);
            cuboidTexture.AddSide(new[] { CuboidSide.Top, CuboidSide.Bottom }, topTexture);

            Geometry.AddVertices(CuboidComposer.Create(4f, 3f, 3f, cuboidTexture));
        }
Пример #6
0
        protected override void CreateGeometry()
        {
            Geometry.AddVertices(CuboidComposer.Create(0.2f, 10f, 0.2f,
                                                       new GeometryTextureRectangle(new Rectangle(0, 4, 4, 4), _texture)));

            var sideTexture1  = new GeometryTextureRectangle(new Rectangle(0, 0, 8, 4), _texture);
            var sideTexture2  = new GeometryTextureRectangle(new Rectangle(12, 4, 4, 4), _texture);
            var bottomTexture = new GeometryTextureRectangle(new Rectangle(8, 0, 8, 4), _texture);
            var cuboidTexture = new GeometryTextureCuboidWrapper();

            cuboidTexture.AddSide(new[] { CuboidSide.Left, CuboidSide.Right }, sideTexture2);
            cuboidTexture.AddSide(new[] { CuboidSide.Front, CuboidSide.Back, CuboidSide.Top }, sideTexture1);
            cuboidTexture.AddSide(new[] { CuboidSide.Bottom }, bottomTexture);

            var topPart = CuboidComposer.Create(0.8f, 0.4f, 0.4f, cuboidTexture);

            VertexTransformer.Offset(topPart, new Vector3(0.25f, 5f, 0f));
            Geometry.AddVertices(topPart);
        }
Пример #7
0
        private static EntityGeometry Cube(EntityData data, Texture2D propTexture)
        {
            ITextureDefintion texture = DefaultTextureDefinition.Instance;
            var textures = data.Textures;

            if (textures != null)
            {
                if (textures.Length == 1)
                {
                    texture = new TextureRectangle(textures[0], propTexture);
                }
                else
                {
                    var cuboidTexture = new TextureCuboidWrapper();
                    for (var i = 0; i < 6; i++)
                    {
                        if (textures.Length > i)
                        {
                            cuboidTexture.AddSide((CuboidSide)(i + 1), new TextureRectangle(textures[i], propTexture));
                        }
                        else
                        {
                            cuboidTexture.AddSide((CuboidSide)(i + 1), DefaultTextureDefinition.Instance);
                        }
                    }
                    texture = cuboidTexture;
                }
            }

            var size = data.Size3;

            var geometry = new EntityGeometry
            {
                Vertices = CuboidComposer.Create(size.X, size.Y, size.Z, texture),
                Heights  = new[] { size.Y, size.Y, size.Y, size.Y },
                Size     = size
            };

            return(geometry);
        }
Пример #8
0
        private static EntityGeometry Walls(EntityData data, Texture2D propTexture)
        {
            var size = data.Size3;

            var textureDefs      = new ITextureDefintion[4];
            var textureDefsRects = new Rectangle[4];

            void setTexture(Rectangle rect, int dest)
            {
                if (data.tileTexture)
                {
                    if (dest % 2 == 1)
                    {
                        rect.Width = (int)(rect.Width * size.Z);
                    }
                    else
                    {
                        rect.Width = (int)(rect.Width * size.X);
                    }
                    rect.Height = (int)(rect.Height * size.Y);
                }
                textureDefs[dest]      = new TextureRectangle(rect, propTexture);
                textureDefsRects[dest] = rect;
            }

            var textures = data.Textures;

            if (textures != null && textures.Length > 0)
            {
                if (textures.Length < 4)
                {
                    for (var i = 0; i < 4; i++)
                    {
                        setTexture(textures[0], i);
                    }
                }
                else
                {
                    for (var i = 0; i < 4; i++)
                    {
                        setTexture(textures[i], i);
                    }
                }
            }
            else
            {
                for (var i = 0; i < 4; i++)
                {
                    setTexture(propTexture.Bounds, i);
                }
            }

            var texture = new TextureCuboidWrapper();

            texture.AddSide(CuboidSide.Front, textureDefs[0]);
            texture.AddSide(CuboidSide.Left, textureDefs[1]);
            texture.AddSide(CuboidSide.Back, textureDefs[2]);
            texture.AddSide(CuboidSide.Right, textureDefs[3]);

            var vertices = CuboidComposer.Create(size.X, size.Y, size.Z, texture).ToList();

            // remove top and bottom vertices:
            vertices.RemoveRange(0, 6);
            vertices.RemoveRange(vertices.Count - 6, 6);

            // remove sides with 0, 0 textures:
            // shift the right vertices to th end of the list
            var right = vertices.Skip(12).Take(6).ToArray();

            vertices.RemoveRange(12, 6);
            vertices.AddRange(right);

            var removedOffset = 0;

            for (var i = 0; i < 4; i++)
            {
                if (textureDefsRects[i].Width == 0 && textureDefsRects[i].Height == 0)
                {
                    vertices.RemoveRange(removedOffset, 6);
                }
                else
                {
                    removedOffset += 6;
                }
            }

            var geometry = new EntityGeometry
            {
                Vertices = vertices.ToArray(),
                Heights  = new[] { size.Y, size.Y, size.Y, size.Y },
                Size     = size
            };

            return(geometry);
        }
Пример #9
0
 protected override void CreateGeometry()
 {
     Geometry.AddVertices(CuboidComposer.Create(1f));
 }
Пример #10
0
 protected override void CreateGeometry()
 {
     Geometry.AddVertices(CuboidComposer.Create(Size.X, Size.Y, Size.Z));
 }
Пример #11
0
 protected override void CreateGeometry()
 {
     Geometry.AddVertices(CuboidComposer.Create(8f, 0.001f, _size,
                                                new GeometryTextureMultiplier(new Vector2(1f, _size / 2f))));
 }
Пример #12
0
 protected override void CreateGeometry()
 {
     Geometry.AddVertices(CuboidComposer.Create(_size, 3f, 0.01f,
                                                new GeometryTextureMultiplier(new Vector2(_size * 3f, 1f))));
 }