示例#1
0
		public static Vector2 Slider2D(int id, Vector2 position, DrawCapFunction drawCapFunction)
		{
			EventType type = Event.current.GetTypeForControl(id);
			
			switch(type)
			{
			case EventType.MouseDown:
				if (Event.current.button == 0 && HandleUtility.nearestControl == id && !Event.current.alt)
				{
					GUIUtility.keyboardControl = id;
					GUIUtility.hotControl = id;
					s_CurrentMousePosition = Event.current.mousePosition;
					s_DragStartScreenPosition = Event.current.mousePosition;
					Vector2 b = Handles.matrix.MultiplyPoint(position);
					s_DragScreenOffset = s_CurrentMousePosition - b;
					EditorGUIUtility.SetWantsMouseJumping(1);
					
					Event.current.Use();
				}
				break;
			case EventType.MouseUp:
				if (GUIUtility.hotControl == id && (Event.current.button == 0 || Event.current.button == 2))
				{
					GUIUtility.hotControl = 0;
					Event.current.Use();
					EditorGUIUtility.SetWantsMouseJumping(0);
				}
				break;
			case EventType.MouseDrag:
				if (GUIUtility.hotControl == id)
				{
					s_CurrentMousePosition = Event.current.mousePosition;
					Vector2 center = position;
					position = Handles.inverseMatrix.MultiplyPoint(s_CurrentMousePosition - s_DragScreenOffset);
					if (!Mathf.Approximately((center - position).magnitude, 0f))
					{
						GUI.changed = true;
					}
					Event.current.Use();
				}
				break;
			case EventType.KeyDown:
				if (GUIUtility.hotControl == id && Event.current.keyCode == KeyCode.Escape)
				{
					position = Handles.inverseMatrix.MultiplyPoint(s_DragStartScreenPosition - s_DragScreenOffset);
					GUIUtility.hotControl = 0;
					GUI.changed = true;
					Event.current.Use();
				}
				break;
			case EventType.Repaint:
				if(drawCapFunction != null)
				{
					drawCapFunction(id,position);
				}
				break;
			}
			
			return position;
		}
        public static float ScaleValueHandle(float value, Vector3 position, Quaternion rotation, float size, DrawCapFunction capFunc, float snap)
        {
            int controlID = GUIUtility.GetControlID(s_ScaleValueHandleHash, FocusType.Keyboard);

            return(SliderScale.DoCenter(controlID, value, position, rotation, size, capFunc, snap));
        }
示例#3
0
 internal static bool Button(int controlID, Vector3 position, Quaternion direction, float size, float pickSize, DrawCapFunction capFunc)
 {
     return UnityEditorInternal.Button.Do(controlID, position, direction, size, pickSize, capFunc);
 }
示例#4
0
 public static bool Button(Vector3 position, Quaternion direction, float size, float pickSize, DrawCapFunction capFunc)
 {
     return UnityEditorInternal.Button.Do(GUIUtility.GetControlID(s_ButtonHash, FocusType.Passive), position, direction, size, pickSize, capFunc);
 }
示例#5
0
        public static Vector3 FreeMoveHandle(Vector3 position, Quaternion rotation, float size, DrawCapFunction capFunc = null)
        {
            int id = GUIUtility.GetControlID(SnappedPointHash, FocusType.Keyboard);

            return(FreeMoveHandle(id, position, rotation, size, capFunc));
        }
示例#6
0
 public static float ScaleValueHandle(float value, Vector3 position, Quaternion rotation, float size, DrawCapFunction capFunc, float snap)
 {
     return SliderScale.DoCenter(GUIUtility.GetControlID(s_ScaleValueHandleHash, FocusType.Keyboard), value, position, rotation, size, capFunc, snap);
 }
        public static Vector3 FreeMoveHandle(Vector3 position, Quaternion rotation, float size, Vector3 snap, DrawCapFunction capFunc)
        {
            int id = GUIUtility.GetControlID(s_FreeMoveHandleHash, FocusType.Passive);

            return(UnityEditorInternal.FreeMove.Do(id, position, rotation, size, snap, capFunc));
        }
        public static Vector3 Slider2D(Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, DrawCapFunction drawFunc, float snap, bool drawHelper)
        {
            int controlID = GUIUtility.GetControlID(s_Slider2DHash, FocusType.Keyboard);

            return(Slider2D(controlID, handlePos, new Vector3(0f, 0f, 0f), handleDir, slideDir1, slideDir2, handleSize, drawFunc, new Vector2(snap, snap), drawHelper));
        }
示例#9
0
 public static Vector3 Slider2D(int id, Vector3 handlePos, Vector3 offset, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, DrawCapFunction drawFunc, Vector2 snap, [DefaultValue("false")] bool drawHelper)
 {
     return UnityEditorInternal.Slider2D.Do(id, handlePos, offset, handleDir, slideDir1, slideDir2, handleSize, drawFunc, snap, drawHelper);
 }
        public static Vector3 Slider(Vector3 position, Vector3 direction, float size, DrawCapFunction drawFunc, float snap)
        {
            int id = GUIUtility.GetControlID(s_SliderHash, FocusType.Passive);

            return(UnityEditorInternal.Slider1D.Do(id, position, direction, size, drawFunc, snap));
        }
示例#11
0
 public static Vector3 Slider2D(int id, Vector3 handlePos, Vector3 offset, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, DrawCapFunction drawFunc, Vector2 snap)
 {
     bool drawHelper = false;
     return Slider2D(id, handlePos, offset, handleDir, slideDir1, slideDir2, handleSize, drawFunc, snap, drawHelper);
 }
示例#12
0
 public static Vector3 Slider2D(Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, DrawCapFunction drawFunc, Vector2 snap, [DefaultValue("false")] bool drawHelper)
 {
     return UnityEditorInternal.Slider2D.Do(GUIUtility.GetControlID(s_Slider2DHash, FocusType.Keyboard), handlePos, new Vector3(0f, 0f, 0f), handleDir, slideDir1, slideDir2, handleSize, drawFunc, snap, drawHelper);
 }
示例#13
0
 public static Vector3 Slider(Vector3 position, Vector3 direction, float size, DrawCapFunction drawFunc, float snap)
 {
     return Slider1D.Do(GUIUtility.GetControlID(s_SliderHash, FocusType.Keyboard), position, direction, size, drawFunc, snap);
 }
 public static Vector3 Slider2D(int id, Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, DrawCapFunction drawFunc, Vector2 snap, bool drawHelper)
 {
     return(Gizmos.Slider2D.Do(id, handlePos, new Vector3(0f, 0f, 0f), handleDir, slideDir1, slideDir2, handleSize, drawFunc, snap, drawHelper));
 }
        public static float ScaleValueHandle(float value, Vector3 position, Quaternion rotation, float size, DrawCapFunction capFunc, float snap)
        {
            int id = GUIUtility.GetControlID(s_ScaleValueHandleHash, FocusType.Passive);

            return(UnityEditorInternal.SliderScale.DoCenter(id, value, position, rotation, size, capFunc, snap));
        }
        public static Vector3 Slider2D(Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, DrawCapFunction drawFunc, float snap)
        {
            bool drawHelper = false;

            return(Slider2D(handlePos, handleDir, slideDir1, slideDir2, handleSize, drawFunc, snap, drawHelper));
        }
        public static bool Button(Vector3 position, Quaternion direction, float size, float pickSize, DrawCapFunction capFunc)
        {
            int id = GUIUtility.GetControlID(s_ButtonHash, FocusType.Passive);

            return(UnityEditorInternal.Button.Do(id, position, direction, size, pickSize, capFunc));
        }
        public static Vector3 Slider(Vector3 position, Vector3 direction, float size, DrawCapFunction drawFunc, float snap)
        {
            int controlID = GUIUtility.GetControlID(s_SliderHash, FocusType.Keyboard);

            return(Slider1D.Do(controlID, position, direction, size, drawFunc, snap));
        }
 internal static bool Button(int controlID, Vector3 position, Quaternion direction, float size, float pickSize, DrawCapFunction capFunc)
 {
     return(UnityEditorInternal.Button.Do(controlID, position, direction, size, pickSize, capFunc));
 }
示例#20
0
        public static Vector3 FreeMoveHandle(int id, Vector3 position, Quaternion rotation, float size, DrawCapFunction capFunc = null)
        {
            if (capFunc == null)
            {
                capFunc = PaintUtility.SquareDotCap;
            }
            Vector3   worldPosition = Handles.matrix.MultiplyPoint(position);
            Matrix4x4 origMatrix    = Handles.matrix;

            switch (Event.current.GetTypeForControl(id))
            {
            case EventType.layout:
            {
                Handles.matrix = MathConstants.identityMatrix;
                HandleUtility.AddControl(id, HandleUtility.DistanceToCircle(worldPosition, size * 1.2f));
                Handles.matrix = origMatrix;
                break;
            }

            case EventType.mouseDown:
            {
                if (GUIUtility.hotControl == 0 &&
                    HandleUtility.nearestControl == id && Event.current.button == 0)
                {
                    GUIUtility.hotControl             = id;
                    GUIUtility.keyboardControl        = id;
                    EditorGUIUtility.editingTextField = false;

                    movePlane = Grid.CurrentGridPlane;
                    movePlane = new CSGPlane(movePlane.normal, position);

                    startMousePosition = Event.current.mousePosition;
//						currentMousePosition = startMousePosition;
//						startPosition = position;

                    Event.current.Use();
                    EditorGUIUtility.SetWantsMouseJumping(1);
                }
                break;
            }

            case EventType.mouseDrag:
            {
                if (GUIUtility.hotControl == id)
                {
                    if (snapFunction == null)
                    {
                        break;
                    }

                    position = snapFunction(startMousePosition, Event.current.mousePosition);
                    if (Camera.current != null && Camera.current.orthographic)
                    {
                        position = movePlane.Project(position);
                    }

                    GUI.changed = true;
                    Event.current.Use();
                }
                break;
            }

            case EventType.mouseUp:
            {
                if (GUIUtility.hotControl == id && Event.current.button == 0)
                {
                    GUIUtility.hotControl             = 0;
                    GUIUtility.keyboardControl        = 0;
                    EditorGUIUtility.editingTextField = false;
                    Event.current.Use();
                    EditorGUIUtility.SetWantsMouseJumping(0);
                }
                break;
            }

            case EventType.repaint:
            {
                bool  isSelected = (id == GUIUtility.keyboardControl) || (id == GUIUtility.hotControl);
                Color temp       = Handles.color;
                if (isSelected)
                {
                    Handles.color = Handles.selectedColor;                             // Why U not work?
                }
                else
                {
                    Handles.color = Color.gray;
                }

                Handles.matrix = MathConstants.identityMatrix;
                capFunc(id, worldPosition, Camera.current.transform.rotation, size);
                Handles.matrix = origMatrix;

                if (isSelected)
                {
                    Handles.color = temp;
                }
                break;
            }
            }
            return(position);
        }
示例#21
0
 public static Vector3 FreeMoveHandle(Vector3 position, Quaternion rotation, float size, Vector3 snap, DrawCapFunction capFunc)
 {
     return FreeMove.Do(GUIUtility.GetControlID(s_FreeMoveHandleHash, FocusType.Keyboard), position, rotation, size, snap, capFunc);
 }