123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- using UnityEngine;
- using UnityEditor;
-
- namespace UnityEditor.U2D.Path.GUIFramework
- {
- /// <summary>
- /// Represents transform data for a slider.
- /// </summary>
- /// <remarks>
- /// Unity uses this data to position and orient the slider in the custom editor.
- /// </remarks>
- public struct SliderData
- {
- /// <summary>
- /// The slider's position.
- /// </summary>
- public Vector3 position;
- /// <summary>
- /// The slider's forward vector.
- /// </summary>
- public Vector3 forward;
- /// <summary>
- /// The slider's up vector.
- /// </summary>
- public Vector3 up;
- /// <summary>
- /// The slider's right vector.
- /// </summary>
- public Vector3 right;
-
- /// <summary>
- /// zero definition for SliderData
- /// </summary>
- public static readonly SliderData zero = new SliderData() { position = Vector3.zero, forward = Vector3.forward, up = Vector3.up, right = Vector3.right };
- }
-
- /// <summary>
- /// Interface for GUIStates
- /// </summary>
- public interface IGUIState
- {
- /// <summary>
- /// The mouse position.
- /// </summary>
- Vector2 mousePosition { get; }
- /// <summary>
- /// The mouse button pressed.
- /// </summary>
- int mouseButton { get; }
- /// <summary>
- /// The number of mouse clicks.
- /// </summary>
- int clickCount { get; set; }
- /// <summary>
- /// Indicates whether the shift key is pressed.
- /// </summary>
- bool isShiftDown { get; }
- /// <summary>
- /// Indicates whether the alt key is pressed.
- /// </summary>
- bool isAltDown { get; }
- /// <summary>
- /// Indicates whether the action key is pressed.
- /// </summary>
- bool isActionKeyDown { get; }
- /// <summary>
- /// The KeyCode of the currently pressed key.
- /// </summary>
- KeyCode keyCode { get; }
- /// <summary>
- /// The type of the event.
- /// </summary>
- EventType eventType { get; }
- /// <summary>
- /// The name of the event's command.
- /// </summary>
- string commandName { get; }
- /// <summary>
- /// The closest control to the event.
- /// </summary>
- int nearestControl { get; set; }
- /// <summary>
- /// Hot Control
- /// </summary>
- int hotControl { get; set; }
- /// <summary>
- /// Indicates whether the GUI has changed.
- /// </summary>
- bool changed { get; set; }
- /// <summary>
-
- /// <summary>
- /// Gets the ID of a nested control by a hint and focus type.
- /// </summary>
- /// <param name="hint">The hint this function uses to identify the control ID.</param>
- /// <param name="focusType">The focus Type</param>
- /// <returns>Returns the ID of the control that matches the hint and focus type.</returns>
- int GetControlID(int hint, FocusType focusType);
- /// <summary>
- /// Adds a control to the GUIState.
- /// </summary>
- /// <param name="controlID">The ID of the control to add.</param>
- /// <param name="distance">The distance from the camera to the control.</param>
- void AddControl(int controlID, float distance);
- /// <summary>
- /// Checks whether a slider value has changed.
- /// </summary>
- /// <param name="id">The ID of the slider to check.</param>
- /// <param name="sliderData">The slider's data.</param>
- /// <param name="newPosition">The new position of the slider.</param>
- /// <returns>Returns `true` if the slider has changed. Otherwise, returns `false`.</returns>
- bool Slider(int id, SliderData sliderData, out Vector3 newPosition);
- /// <summary>
- /// Uses the event.
- /// </summary>
- void UseEvent();
- /// <summary>
- /// Repaints the GUI.
- /// </summary>
- void Repaint();
- /// <summary>
- /// Checks if the current camera is valid.
- /// </summary>
- /// <returns>Returns `true` if the current camera is not null. Otherwise, returns `false`.</returns>
- bool HasCurrentCamera();
- /// <summary>
- /// Gets the size of the handle.
- /// </summary>
- /// <param name="position">The position of the handle.</param>
- /// <returns>Returns the size of the handle.</returns>
- float GetHandleSize(Vector3 position);
- /// <summary>
- /// Measures the GUI-space distance between two points of a segment.
- /// </summary>
- /// <param name="p1">The first point.</param>
- /// <param name="p2">The second point.</param>
- /// <returns>Returns the GUI-space distance between p1 and p2.</returns>
- float DistanceToSegment(Vector3 p1, Vector3 p2);
- /// <summary>
- /// Measures the distance to a circle.
- /// </summary>
- /// <param name="center">The center of the circle</param>
- /// <param name="radius">The radius of the circle</param>
- /// <returns>Returns the distance to a circle with the specified center and radius.</returns>
- float DistanceToCircle(Vector3 center, float radius);
- /// <summary>
- /// Transforms a GUI-space position into world space.
- /// </summary>
- /// <param name="guiPosition">The GUI Position.</param>
- /// <param name="planeNormal">The plane normal.</param>
- /// <param name="planePos">The plane position.</param>
- /// <returns>Returns the world-space position of `guiPosition`.</returns>
- Vector3 GUIToWorld(Vector2 guiPosition, Vector3 planeNormal, Vector3 planePos);
- }
- }
|