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); }
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. }
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); }
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); }
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); } }
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); }