private void OnSceneGUI() { BS.ParryDefinition parry = (BS.ParryDefinition)target; if (parry.length > 0 && !centerTransform) { if (Tools.current != Tool.None) { previousTool = Tools.current; Tools.current = Tool.None; toolsHidden = true; } HandlePoint1 = Handles.DoPositionHandle(HandlePoint1, Quaternion.identity); HandlePoint2 = Handles.DoPositionHandle(HandlePoint2, Quaternion.identity); if (EditorWindow.mouseOverWindow && EditorWindow.mouseOverWindow.ToString() == " (UnityEditor.SceneView)") { parry.transform.position = (HandlePoint1 + HandlePoint2) / 2; parry.length = (HandlePoint1 - HandlePoint2).magnitude; parry.transform.rotation = Quaternion.LookRotation(HandlePoint2 - HandlePoint1, Vector3.forward) * Quaternion.AngleAxis(-90, Vector3.right); } } else if (toolsHidden) { Tools.current = previousTool; toolsHidden = false; } }
private void OnEnable() { BS.ParryDefinition parry = (BS.ParryDefinition)target; foreach (Transform parent in parry.transform.GetComponentsInParent <Transform>()) { if (parent.rotation != Quaternion.identity && parent.gameObject != parry.gameObject) { centerTransform = true; pointToPointDisabled = true; } } HandlePoint1 = parry.transform.rotation * new Vector3(0, parry.length / 2, 0) + parry.transform.position; HandlePoint2 = parry.transform.rotation * new Vector3(0, -parry.length / 2, 0) + parry.transform.position; parry.transform.hideFlags = HideFlags.NotEditable; }
public override void OnInspectorGUI() { BS.ParryDefinition parry = (BS.ParryDefinition)target; if (centerTransform) { GUI.enabled = !pointToPointDisabled; if (GUILayout.Button("Enable Point to Point transforms")) { centerTransform = false; parry.transform.hideFlags = HideFlags.NotEditable; } GUI.enabled = true; } else { if (GUILayout.Button("Enable Center Transform")) { centerTransform = true; parry.transform.hideFlags = 0; } } base.OnInspectorGUI(); if (pointToPointDisabled) { foreach (Transform parent in parry.transform.GetComponentsInParent <Transform>()) { if (parent.rotation != Quaternion.identity && parent.gameObject != parry.gameObject) { EditorGUILayout.HelpBox("Object " + parent.name + " is rotated. Please make sure all the parents of the damagers have rotation set to 0. Point-to-Point transform has been disabled.", MessageType.Warning); parry.transform.hideFlags = 0; } } } //POINT TO POINT HANDLE TRANSFORM if (GUI.changed || parry.transform.hasChanged || Event.current.type == EventType.MouseDown) { HandlePoint1 = parry.transform.rotation * new Vector3(0, parry.length / 2, 0) + parry.transform.position; HandlePoint2 = parry.transform.rotation * new Vector3(0, -parry.length / 2, 0) + parry.transform.position; } }