Example #1
0
        private void DrawRadiusHandle(CylindrifyDeformer cylindrify)
        {
            var position = Vector3.up * cylindrify.Radius;

            var axis = cylindrify.Axis;

            using (new Handles.DrawingScope(Matrix4x4.TRS(axis.position, axis.rotation, axis.lossyScale)))
            {
                var size = HandleUtility.GetHandleSize(position) * DeformEditorSettings.ScreenspaceSliderHandleCapSize;

                DeformHandles.Circle(Vector3.zero, Vector3.forward, Vector3.up, cylindrify.Radius);

                DeformHandles.Line(position + Vector3.forward * size, position + Vector3.forward * size * 5f, DeformHandles.LineMode.Light);
                DeformHandles.Line(position - Vector3.forward * size, position - Vector3.forward * size * 5f, DeformHandles.LineMode.Light);

                using (var check = new EditorGUI.ChangeCheckScope())
                {
                    var newWorldPosition = DeformHandles.Slider(position, Vector3.up);
                    if (check.changed)
                    {
                        Undo.RecordObject(cylindrify, "Changed Radius");
                        cylindrify.Radius = cylindrify.Axis.position.y;
                    }
                }
            }
        }
Example #2
0
        private void DrawFactorHandle(CylindrifyDeformer cylindrify)
        {
            if (cylindrify.Radius == 0f)
            {
                return;
            }

            var position = Vector3.up * cylindrify.Factor * cylindrify.Radius;

            var axis = cylindrify.Axis;

            using (new Handles.DrawingScope(Matrix4x4.TRS(axis.position, axis.rotation, axis.lossyScale)))
            {
                DeformHandles.Line(position, Vector3.zero, DeformHandles.LineMode.Light);
                DeformHandles.Line(position, Vector3.up * cylindrify.Radius, DeformHandles.LineMode.LightDotted);

                using (var check = new EditorGUI.ChangeCheckScope())
                {
                    var newWorldPosition = DeformHandles.Slider(position, Vector3.up);
                    if (check.changed)
                    {
                        Undo.RecordObject(cylindrify, "Changed Radius");
                        cylindrify.Factor = newWorldPosition.y;
                    }
                }
            }
        }