Ejemplo n.º 1
0
        static void DrawOutline(CSGTorusDefinition 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)
            {
                CSGOutlineRenderer.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)
                {
                    CSGOutlineRenderer.DrawLine(vertices[j + k], vertices[j + k + vertSegments], lineMode: lineMode, thickness: kHorzLineThickness);
                }
            }
            if (definition.totalAngle == 360)
            {
                for (int k = 0; k < vertSegments; k++)
                {
                    CSGOutlineRenderer.DrawLine(vertices[k], vertices[k + ((horzSegments - 1) * vertSegments)], lineMode: lineMode, thickness: kHorzLineThickness);
                }
            }
            UnityEditor.Handles.color = prevColor;
        }
Ejemplo n.º 2
0
        void InnerDiameterPropertyField()
        {
            var content  = InnerDiameterContent;
            var position = GUILayoutUtility.GetRect(content, EditorStyles.numberField);

            content = EditorGUI.BeginProperty(position, content, tubeWidthProp);
            {
                EditorGUI.showMixedValue = outerDiameterProp.hasMultipleDifferentValues ||
                                           tubeWidthProp.hasMultipleDifferentValues;
                float innerDiameter;
                EditorGUI.BeginChangeCheck();
                {
                    innerDiameter = CSGTorusDefinition.CalcInnerDiameter(outerDiameterProp.floatValue, tubeWidthProp.floatValue);
                    innerDiameter = EditorGUI.FloatField(position, content, innerDiameter);
                }
                if (EditorGUI.EndChangeCheck())
                {
                    tubeWidthProp.floatValue = CSGTorusDefinition.CalcTubeWidth(outerDiameterProp.floatValue, innerDiameter);
                }
            }
            EditorGUI.EndProperty();
        }