private void DrawFactorHandle(BulgeDeformer bulge) { var direction = bulge.Axis.up; var center = bulge.Axis.position + (bulge.Axis.forward * ((bulge.Top + bulge.Bottom) * 0.5f)); var worldPosition = center + direction * ((bulge.Factor + 1f) * 0.5f); DeformHandles.Line(center, worldPosition, DeformHandles.LineMode.LightDotted); using (var check = new EditorGUI.ChangeCheckScope()) { var newWorldPosition = DeformHandles.Slider(worldPosition, direction); if (check.changed) { var newFactor = DeformHandlesUtility.DistanceAlongAxis(bulge.Axis, bulge.Axis.position, newWorldPosition, Axis.Y) * 2f - 1f; Undo.RecordObject(bulge, "Changed Factor"); bulge.Factor = newFactor; } } }
void Start() { bulge = GetComponentInChildren <BulgeDeformer>(); }