public void GenerateResolvedBody(Geometry geometry) { SpinAuxiliary auxiliary = new SpinAuxiliary(); auxiliary.InitWithGeometry(geometry); geometryBehaviour = GameObject.Find("/3D/Geometry").GetComponent <GeometryBehaviour>(); VertexUnit[] vertexUnits = auxiliary.vertices; // Cylinder if (vertexUnits.Length == 4) { VertexUnit vertex1 = vertexUnits[0]; VertexUnit vertex2 = vertexUnits[1]; VertexUnit vertex3 = vertexUnits[2]; VertexUnit vertex4 = vertexUnits[3]; float radius1 = vertexUnits[3].Position().z; float radius2 = vertexUnits[2].Position().z; GeoCircular circular = new GeoCircular(new VertexUnit[] { vertex1, vertex2, vertex3, vertex4 }, radius1, radius2, CircularType.Cylinder); geometry.AddGeoCircular(circular); VertexSpace circle1 = new VertexSpace(0, vertex4.Position().y, 0); VertexSpace circle2 = new VertexSpace(0, vertex3.Position().y, 0); geometry.AddGeoCircle(new GeoCircle(circle1, radius1, CircleDirection.Y, false, FaceType.SpreadCylinderCircle)); geometry.AddGeoCircle(new GeoCircle(circle2, radius2, CircleDirection.Y, false, FaceType.SpreadCylinderCircle)); } // Cone else if (vertexUnits.Length == 3) { VertexUnit vertex1 = vertexUnits[0]; VertexUnit vertex2 = vertexUnits[1]; VertexUnit vertex3 = vertexUnits[2]; float radius = vertexUnits[2].Position().z; GeoCircular circular = new GeoCircular(new VertexUnit[] { vertex1, vertex2, vertex3 }, radius, radius, CircularType.Cone); geometry.AddGeoCircular(circular); VertexSpace circle1 = new VertexSpace(0, vertex3.Position().y, 0); geometry.AddGeoCircle(new GeoCircle(circle1, radius, CircleDirection.Y, false, FaceType.SpreadConeCircle)); } geometryBehaviour.InitGeometry(geometry); StatusButton lockButton = GameObject.Find("LockButton").GetComponent <StatusButton>(); lockButton.SetStatus(0); }
public override Auxiliary GenerateAuxiliary(Geometry geometry, FormInput formInput) { bool valid = ValidateInput(geometry, formInput); if (!valid) { return(null); } SpinAuxiliary auxiliary = new SpinAuxiliary(); auxiliary.InitWithGeometry(geometry); VertexUnit[] vertexUnits = auxiliary.vertices; if (vertexUnits.Length != 3 && vertexUnits.Length != 4) { return(null); } SpinCartoon(vertexUnits, geometry); return(auxiliary); }