Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
            }
        }