static void DrawOutline(ChiselTorusDefinition definition, Vector3[] vertices, LineMode lineMode) { //var baseColor = UnityEditor.Handles.yAxisColor; //var isDisabled = UnitySceneExtensions.Handles.disabled; var normal = Vector3.up; var horzSegments = definition.horizontalSegments; var vertSegments = definition.verticalSegments; if (definition.totalAngle != 360) { horzSegments++; } var prevColor = UnityEditor.Handles.color; prevColor.a *= 0.8f; var color = prevColor; color.a *= 0.6f; UnityEditor.Handles.color = color; for (int i = 0, j = 0; i < horzSegments; i++, j += vertSegments) { ChiselOutlineRenderer.DrawLineLoop(vertices, j, vertSegments, lineMode: lineMode, thickness: kVertLineThickness); } for (int k = 0; k < vertSegments; k++) { for (int i = 0, j = 0; i < horzSegments - 1; i++, j += vertSegments) { ChiselOutlineRenderer.DrawLine(vertices[j + k], vertices[j + k + vertSegments], lineMode: lineMode, thickness: kHorzLineThickness); } } if (definition.totalAngle == 360) { for (int k = 0; k < vertSegments; k++) { ChiselOutlineRenderer.DrawLine(vertices[k], vertices[k + ((horzSegments - 1) * vertSegments)], lineMode: lineMode, thickness: kHorzLineThickness); } } UnityEditor.Handles.color = prevColor; }
void InnerDiameterPropertyField() { var content = kInnerDiameterContent; var position = GUILayoutUtility.GetRect(content, EditorStyles.numberField); content = EditorGUI.BeginProperty(position, content, tubeWidthProp); { EditorGUI.showMixedValue = outerDiameterProp.hasMultipleDifferentValues || tubeWidthProp.hasMultipleDifferentValues; float innerDiameter; EditorGUI.BeginChangeCheck(); { innerDiameter = ChiselTorusDefinition.CalcInnerDiameter(outerDiameterProp.floatValue, tubeWidthProp.floatValue); innerDiameter = EditorGUI.FloatField(position, content, innerDiameter); } if (EditorGUI.EndChangeCheck()) { tubeWidthProp.floatValue = ChiselTorusDefinition.CalcTubeWidth(outerDiameterProp.floatValue, innerDiameter); } } EditorGUI.EndProperty(); }