Beispiel #1
0
        public PrismMeshScene()
        {
            DefaultFloor();
            Light(1, 1, -1);

            Add(BuildPolygon(3).Scale(0.2, 0.25, 0.2).Translate(tx: -0.75, tz: 0));
            Add(BuildPolygon(4).Scale(0.2, 0.25, 0.2).Translate(tx: -0, tz: 0.75));
            Add(BuildPolygon(5).Scale(0.2, 0.25, 0.2).Translate(tx: 0.75, tz: 0.5));
            Add(BuildPolygon(6).Scale(0.2, 0.25, 0.2).Translate(tx: 0.5, tz: -0.5));

            IEnumerable <Tuple> points = new Tuple[]
            {
                Helper.CreatePoint(-3, 0, 5),
                Helper.CreatePoint(3, 0, 5),
                Helper.CreatePoint(3, 0, 3),
                Helper.CreatePoint(-1, 0, 3),
                Helper.CreatePoint(-1, 0, 1),
                Helper.CreatePoint(1, 0, 1),

                Helper.CreatePoint(1, 0, -1),
                Helper.CreatePoint(-1, 0, -1),
                Helper.CreatePoint(-1, 0, -3),
                Helper.CreatePoint(3, 0, -3),
                Helper.CreatePoint(3, 0, -5),
                Helper.CreatePoint(-3, 0, -5)
            };

            var mesh = new PrismMesh(points);
            var triangleMeshFactory = new TriangleMeshFactory(false);
            var letterE             = (triangleMeshFactory.Build(mesh).Scale(0.1).Rotate(ry: Math.PI / 4));

            letterE.Material.Pattern = new SolidPattern(Color._Blue);
            Add(letterE);
        }
Beispiel #2
0
    public EMesh(PrismMesh copy, Dictionary <PrismTexture.Tile, TextureSet.Tile> tiles, Layer l, Editor e)
        : this(l, e)
    {
        for (int i = 0; i < vertices.Count; i++)
        {
            vertices[i].Position = copy.VertexPosition[i];
            vertices[i].HSL      = copy.VertexColor[i];
        }

        design = copy.
    }
Beispiel #3
0
        public Prism(IEnumerable <Point2D> points)
        {
            var point2Ds = points as Point2D[] ?? points.ToArray();
            var bottom   = BuildPolygonShape(point2Ds);
            var top      = BuildPolygonShape(point2Ds).Translate(ty: 1);

            var mesh = new PrismMesh(point2Ds);
            var triangleMeshFactory = new TriangleMeshFactory(false);
            var walls = triangleMeshFactory.Build(mesh);

            Add(walls, top, bottom);
        }
Beispiel #4
0
        private IShape BuildPolygon(int n)
        {
            var points = Enumerable.Range(0, n).Select(i =>
            {
                var x = Math.Cos(2 * Math.PI * i / n);
                var z = Math.Sin(2 * Math.PI * i / n);
                return(Helper.CreatePoint(x, 0, z));
            }).ToArray();
            var mesh = new PrismMesh(points, true);
            var triangleMeshFactory = new TriangleMeshFactory(false);
            var prism = triangleMeshFactory.Build(mesh);

            return(prism);
        }
Beispiel #5
0
    public EMesh(PrismMesh copy, Dictionary <PrismTexture.Tile, TextureSet.Tile> tiles, Layer l, Editor e)
        : this(l, e)
    {
        for (int i = 0; i < vertices.Count; i++)
        {
            vertices[i].Position = copy.VertexPosition[i];
            vertices[i].HSL      = copy.VertexColor[i];
        }

        if (copy.Tile != null)
        {
            design = new MeshDesign(tiles[copy.Tile]);
        }
        else
        {
            design = new MeshDesign(TKTools.Color.Red);
        }
    }
Beispiel #6
0
    public override PrismLayerNode GetPrismNode(PrismLayerNode parent, Dictionary <TextureSet.Tile, PrismTexture.Tile> tiles)
    {
        PrismLayer node = new PrismLayer(Name, parent);

        foreach (EMesh m in Meshes)
        {
            Vector2[]  pos = new Vector2[m.Vertices.Count];
            ColorHSL[] col = new ColorHSL[m.Vertices.Count];

            for (int i = 0; i < pos.Length; i++)
            {
                pos[i] = m.Vertices[i].Position;
                col[i] = m.Vertices[i].HSL;
            }

            PrismMesh mesh = new PrismMesh(pos, col, m.Tile != null ? tiles[m.Tile] : null);
            node.Meshes.Add(mesh);
        }

        return(node);
    }