// HELPERS IEnumerator RemoveAfterSeconds(int seconds, WI_InteractionController controller) { yield return(new WaitForSeconds(seconds)); controller.transform.GetChild(2).gameObject.SetActive(false); menuExists = false; }
private void AddFixedJointToController(WI_InteractionController controller) { FixedJoint fx = controller.gameObject.AddComponent <FixedJoint> (); fx.breakForce = 20000; fx.breakTorque = 20000; fx.connectedBody = rb; }
private void RemoveFixedJointFromController(WI_InteractionController controller) { if (controller.gameObject.GetComponent <FixedJoint> ()) { FixedJoint fx = controller.gameObject.GetComponent <FixedJoint> (); fx.connectedBody = null; Destroy(fx); } }
// On trigger down, grab object. public override void OnTriggerWasPressed(WI_InteractionController controller) { base.OnTriggerWasPressed(controller); if (hideControllerModelOnGrab) { controller.HideControllerModel(); } AddFixedJointToController(controller); }
// INTERACTION DEFINITIONS // On press up, scale up. public override void OnPressDown(WI_InteractionController controller) { base.OnPressDown(controller); current_scale_f = rb.transform.localScale.x; current_scale_i = (int)(current_scale_f * 1000.0f); if (current_scale_i > lower_bound_i) { // Set the third child as active controller.transform.GetChild(2).gameObject.SetActive(true); StartCoroutine(RemoveAfterSeconds(10, controller)); menuExists = true; ScaleDown(); } }
// On press down, scale down. public override void OnPressUp(WI_InteractionController controller) { base.OnPressUp(controller); // OKAY SOME WEIRD BLACK MAGIC IS HAPPENING HERE. IF I ADD THE TWO LINES BELOW (WHICH // SHOULD NOT DO ANYTHING EXCEPT GET THE VALUE), THE MAX SCALE GOES TO 5. I DON'T GET // IT BUT I'M JUST GONNA IGNORE THE PROBLEM BECAUSE I'M GOING INSANE. //current_scale_f = rb.transform.localScale.x; //current_scale_i = (int)(current_scale_f * 1000.0f); if (current_scale_i < upper_bound_i) { controller.transform.GetChild(2).gameObject.SetActive(true); StartCoroutine(RemoveAfterSeconds(5, controller)); menuExists = true; ScaleUp(); } }
// On trigger released, drop object. public override void OnTriggerWasReleased(WI_InteractionController controller) { base.OnTriggerWasReleased(controller); if (hideControllerModelOnGrab) { controller.ShowControllerModel(); } rb.velocity = controller.velocity; rb.angularVelocity = controller.angularVelocity; RemoveFixedJointFromController(controller); controller.SetHandMenuActive(false); // If the slider is still there, destroy it. if (menuExists) { controller.transform.GetChild(2).gameObject.SetActive(false); menuExists = false; } }
public virtual void OnPressUp(WI_InteractionController controller) { currentController = controller; }
public virtual void OnButton3Pressed(WI_InteractionController controller) { currentController = controller; }
public virtual void OnTriggerWasReleased(WI_InteractionController controller) { currentController = null; }
public virtual void OnTriggerIsBeingPressed(WI_InteractionController controller) { }
public WI_InteractionController currentController; //3 public virtual void OnTriggerWasPressed(WI_InteractionController controller) { currentController = controller; }