void OnTriggerExit(Collider other) { Object_Selection_Status objStatus = GameObject.Find(other.name).GetComponent <Object_Selection_Status>(); objStatus.hoverStatus = false; if (other.gameObject == currentHover) { currentHover = null; } }
//use fixed update to sync w/ ontrigger void FixedUpdate() { oldIndexTriggerState = indexTriggerState; indexTriggerState = OVRInput.Get(OVRInput.Axis1D.PrimaryIndexTrigger, controller); selectedObjects = selectedObjectsScript.selectedObjects; multiSelectButton = selectedObjectsScript.multiSelectButton; //print ("Old trigger state: " + oldIndexTriggerState); //print ("New trigger state: " + indexTriggerState); selectionMode = MenuModeSelection.selectionMode; //print ("Index Trigger State: " + indexTriggerState); //print ("Multi Select Button State: " + multiSelectButton); //IF TRIGGER IS PRESSED W/O HOLDING DOWN MULTI SELECT BUTTON, CLEAR SELECTED LIST if ((indexTriggerState >= 0.8f && oldIndexTriggerState < 0.8f) && !multiSelectButton) { //print ("TRIGGERED" + triggerCount); triggerCount++; foreach (GameObject selectedObject in selectedObjects) { Object_Selection_Status objStatus = GameObject.Find(selectedObject.name).GetComponent <Object_Selection_Status> (); if (selectedObject != currentHover) { objStatus.selectionStatus = false; } } } /* * if (currentHover != null) { * print ("Currently hovering on: " + currentHover.name); * } */ }
void OnTriggerStay(Collider other) { /* currentHover is the game object that this controller should be giving the hover state to. * Whenever the controller collides with another game object, it might set the new object to be currentHover. * An object should set its hover state to on only if it is the currentHover. */ //Check Selection mode to ensure valid interaction. if ((selectionMode == 0 || selectionMode == 4) && (other.CompareTag("vertex"))) { validInteraction = true; } else if ((selectionMode == 1 || selectionMode == 4) && (other.CompareTag("edge"))) { validInteraction = true; } else if ((selectionMode == 2 || selectionMode == 4) && (other.CompareTag("face"))) { validInteraction = true; } else if ((selectionMode == 3 || selectionMode == 4) && (other.CompareTag("object"))) { validInteraction = true; } else { validInteraction = false; } if (validInteraction && ((currentHover == null) //|| (other.gameObject.tag == currentHover.tag) || (other.gameObject.tag == "vertex") || (other.gameObject.tag == "edge" && !(currentHover.tag == "vertex" || currentHover.tag == "edge")) || (other.gameObject.tag == "face" && !(currentHover.tag == "vertex" || currentHover.tag == "edge" || currentHover.tag == "face")) || (other.gameObject.tag == "object" && (currentHover.tag != "vertex" && currentHover.tag != "edge" && currentHover.tag != "face" && currentHover.tag != "object")))) { currentHover = other.gameObject; } //print (other.name); //print ("test statement"); if (validInteraction) { print("Valid interaction."); //IMPORT COLLIDED OBJECT'S STATUS SCRIPT Object_Selection_Status objStatus = GameObject.Find(other.name).GetComponent <Object_Selection_Status> (); //TURN ON THE HOVER STATE IF THIS OBJECT IS THE CURRENT HOVER OBJECT; ELSE TURN IT OFF if (other.gameObject == currentHover) { objStatus.hoverStatus = true; } else { objStatus.hoverStatus = false; } //TOGGLE SELECTION STATE WHEN TRIGGER PRESSED if ((indexTriggerState >= 0.8f && oldIndexTriggerState < 0.8f) && (other.gameObject == currentHover)) { if (!objStatus.selectionStatus) { print("Object selected: " + other.name); objStatus.selectionStatus = true; selectedObjects.Add(other.gameObject); } else { print("Object deselected: " + other.name); objStatus.selectionStatus = false; selectedObjects.Remove(other.gameObject); } } } }