15 [Obsolete(
"Use FocusManager.PointerSpecificFocusChangedMethod")]
16 public delegate
void FocusedChangedDelegate(GameObject previousObject, GameObject newObject);
21 [Obsolete(
"Use FocusManager.TryGetFocusDetails")]
22 public bool IsGazingAtObject {
get;
private set; }
28 [Obsolete(
"Use FocusManager.PointerSpecificFocusChanged")]
29 #pragma warning disable 618 30 #pragma warning disable 67 32 #pragma warning restore 67 33 #pragma warning restore 618 38 [Obsolete(
"Use FocusManager.UnityUIPointerEvent")]
39 public PointerEventData UnityUIPointerEvent {
get;
private set; }
44 public RaycastHit HitInfo {
get;
private set; }
49 public GameObject HitObject {
get;
private set; }
55 public Vector3 HitPosition {
get;
private set; }
61 public Vector3 HitNormal {
get;
private set; }
66 public Vector3 GazeOrigin
68 get {
return Rays[0].Origin; }
74 public Vector3 GazeNormal
76 get {
return Rays[0].Direction; }
82 [Tooltip(
"Maximum distance at which the gaze can collide with an object.")]
83 public float MaxGazeCollisionDistance = 10.0f;
96 [Tooltip(
"The LayerMasks, in prioritized order, that are used to determine the HitObject when raycasting.\n\nExample Usage:\n\n// Allow the cursor to hit SR, but first prioritize any DefaultRaycastLayers (potentially behind SR)\n\nint sr = LayerMask.GetMask(\"SR\");\nint nonSR = Physics.DefaultRaycastLayers & ~sr;\nGazeManager.Instance.RaycastLayerMasks = new LayerMask[] { nonSR, sr };")]
97 public LayerMask[] RaycastLayerMasks = { Physics.DefaultRaycastLayers };
103 [Tooltip(
"Stabilizer, if any, used to smooth out the gaze ray data.")]
110 [Tooltip(
"Transform that should be used to represent the gaze position and rotation. Defaults to CameraCache.Main")]
113 [Tooltip(
"True to draw a debug view of the ray.")]
117 [Obsolete(
"Will be removed in a later version. Use Rays instead.")]
118 public Ray Ray {
get {
return Rays[0]; } }
120 public RayStep[] Rays {
get {
return rays; } }
124 public float? ExtentOverride
126 get {
return MaxGazeCollisionDistance; }
129 public LayerMask[] PrioritizedLayerMasksOverride
131 get {
return RaycastLayerMasks; }
134 public bool InteractionEnabled
139 public bool FocusLocked {
get;
set; }
141 private float lastHitDistance = 2.0f;
148 if (RaycastLayerMasks == null || RaycastLayerMasks.Length == 0)
150 RaycastLayerMasks =
new LayerMask[] { Physics.DefaultRaycastLayers };
156 private void Update()
158 if (!FindGazeTransform())
165 Debug.DrawRay(GazeOrigin, (HitPosition - GazeOrigin), Color.white);
169 private bool FindGazeTransform()
171 if (GazeTransform != null) {
return true; }
179 Debug.LogError(
"Gaze Manager was not given a GazeTransform and no main camera exists to default to.");
186 private void UpdateGazeInfo()
188 if (GazeTransform == null)
194 Vector3 newGazeOrigin = GazeTransform.position;
195 Vector3 newGazeNormal = GazeTransform.forward;
198 if (Stabilizer != null)
202 newGazeNormal = Stabilizer.
StableRay.direction;
205 Rays[0].UpdateRayStep(newGazeOrigin, newGazeOrigin + (newGazeNormal *
FocusManager.
Instance.GetPointingExtent(
this)));
211 [Obsolete(
"Will be removed in a later version. Use OnPreRaycast / OnPostRaycast instead.")]
241 HitObject = isRegisteredForFocus
245 if (focusDetails.
Object != null)
247 lastHitDistance = (focusDetails.
Point - Rays[0].Origin).magnitude;
249 HitNormal = focusDetails.
Normal;
253 private void UpdateHitPosition()
255 HitPosition = (Rays[0].Origin + (lastHitDistance * Rays[0].Direction));