Advertisement
Selzier

Process Function from GazeInputModule to deal with Distance

Jan 5th, 2017
465
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.64 KB | None | 0 0
  1. public override void Process() {
  2.         // Save the previous Game Object
  3.         GameObject gazeObjectPrevious = GetCurrentGameObject();
  4.  
  5.         CastRayFromGaze();
  6.  
  7.         // Send enter events and update the highlight.
  8.         GameObject gameobjectAtGaze = pointerData.pointerCurrentRaycast.gameObject;
  9.         // Check if there is a gameObject at gaze (with an eventTrigger)
  10.         if (gameobjectAtGaze) {
  11.             // Check if it has an InteractiveObject script
  12.             interactiveObjectScript = gameobjectAtGaze.GetComponent<InteractiveObject>();
  13.             // Object has InteractiveObject script, and is within 'interaction' distance
  14.             if (interactiveObjectScript) {
  15.                 // Check distance on object
  16.                 if (Vector3.Distance(gameobjectAtGaze.transform.position, Camera.main.transform.position) <= interactiveObjectScript.distance) {
  17.                     // Process Normally
  18.                     UpdateCurrentObject();
  19.                     UpdateReticle(gazeObjectPrevious);
  20.                 }
  21.                 // Else there is an object, it has InteractiveObject script, but it is outside of distance.
  22.                 else {
  23.                     // Pointer has exited
  24.                     HandlePointerExitAndEnter(pointerData, null);
  25.                     // Reset pointer data (pointerData.reset does not work)
  26.                     pointerData = new PointerEventData(eventSystem);
  27.                     // Update the Reticle
  28.                     UpdateReticle(gazeObjectPrevious);
  29.                 }
  30.             }
  31.             // No InteractiveObject Script
  32.             else {
  33.                 // Process Normally
  34.                 UpdateCurrentObject();
  35.                 UpdateReticle(gazeObjectPrevious);
  36.             }
  37.             // Null, no gameobject (looking into a Skybox)
  38.         }
  39.         else {
  40.             // Process Normally
  41.             UpdateCurrentObject();
  42.             UpdateReticle(gazeObjectPrevious);
  43.         }
  44.  
  45.         // Handle input
  46.         if (!Input.GetMouseButtonDown(0) && Input.GetMouseButton(0)) {
  47.             HandleDrag();
  48.         }
  49.         else if (Time.unscaledTime - pointerData.clickTime < clickTime) {
  50.             // Delay new events until clickTime has passed.
  51.         }
  52.         else if (!pointerData.eligibleForClick &&
  53.                  (GvrViewer.Instance.Triggered || Input.GetMouseButtonDown(0))) {
  54.             // New trigger action.
  55.             HandleTrigger();
  56.         }
  57.         else if (!GvrViewer.Instance.Triggered && !Input.GetMouseButton(0)) {
  58.             // Check if there is a pending click to handle.
  59.             HandlePendingClick();
  60.         }
  61.     }
  62.     /// @endcond
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement