/// <summary> /// Initializes the Points and Triangles collections. /// Called By Sculptor.BuildMesh() /// </summary> protected override void CreateTriangles() { _ps1 = new PolygonSculptor(); _ps1.Initialize(_circumferenceSideCount, _initialAngle); _ps1.RoundingRate = _roundingRate; _ps1.BuildTriangles(TriangleSideKind.Back); foreach (Vector3Triplet tpl in _ps1.Triangles) { this.Triangles.Add(tpl); } foreach (Vector3 p in _ps1.Points) { this.Points.Add(p); } _ps2 = new PolygonSculptor(); _ps2.Initialize(_circumferenceSideCount, _initialAngle); _ps2.RoundingRate = _roundingRate; _ps2.Center = new Vector3( _ps2.Center.X, _ps2.Center.Y, _ps2.Center.Z + 1.0f); this.Points.Add(_ps2.Center); _ps2.BuildTriangles(TriangleSideKind.Front); foreach (Vector3Triplet tpl in _ps2.Triangles) { this.Triangles.Add(tpl); } }
/// <summary> /// Initializes the Points and Triangles collections. /// Called By Sculptor.BuildMesh() /// </summary> /// <remarks>The cull mode is supposed to be clockwise (front faces are counter-clockwise).</remarks> protected override void CreateTriangles() { _ps1 = new PolygonSculptor(); _ps1.Initialize(_circumferenceSideCount, _initialAngle); _ps1.RoundingRate = _roundingRate; _ps1.BuildTriangles(TriangleSideKind.Back); foreach (Vector3 p in _ps1.Points) { this.Points.Add(p); } foreach (Vector3Triplet tpl in _ps1.Triangles) { this.Triangles.Add(tpl); } _ps2 = new PolygonSculptor(); _ps2.Initialize(_circumferenceSideCount, _initialAngle); _ps2.Center = new Vector3( _ps2.Center.X, _ps2.Center.Y, _ps2.Center.Z + 1.0f); for (int i = 0; i < _ps2.Points.Count; i++) { _ps2.Points[i] = new Vector3( _ps2.Points[i].X, _ps2.Points[i].Y, _ps2.Points[i].Z + 1.0f); this.Points.Add(_ps2.Points[i]); } _ps2.RoundingRate = _roundingRate; _ps2.BuildTriangles(TriangleSideKind.Front); foreach (Vector3Triplet tpl in _ps2.Triangles) { this.Triangles.Add(tpl); } for (int i = 0; i < _ps1.Points.Count; i++) { if (i < _ps1.Points.Count - 1) { this.Triangles.Add(new Vector3Triplet(_ps1.Points[i], _ps2.Points[i + 1], _ps2.Points[i])); this.Triangles.Add(new Vector3Triplet(_ps1.Points[i], _ps1.Points[i + 1], _ps2.Points[i + 1])); } else { this.Triangles.Add(new Vector3Triplet(_ps1.Points[i], _ps2.Points[0], _ps2.Points[i])); this.Triangles.Add(new Vector3Triplet(_ps1.Points[i], _ps1.Points[0], _ps2.Points[0])); } } }