void Update() { var device = SteamVR_Controller.Input(index); /* * foreach (var buttonId in buttonIds) * { * if (SteamVR_Controller.Input(index).GetPressDown(buttonId)) * { * * } * if (SteamVR_Controller.Input(index).GetPressUp(buttonId)) * { * * } * if (SteamVR_Controller.Input(index).GetPress(buttonId)) * { * * } * } */ foreach (var buttonId in axisIds) { if (SteamVR_Controller.Input(index).GetTouchDown(buttonId)) { //Debug.Log(buttonId + " touch down"); } if (SteamVR_Controller.Input(index).GetTouchUp(buttonId)) { if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger) { DropItem(device); } } if (SteamVR_Controller.Input(index).GetTouch(buttonId)) { var axis = SteamVR_Controller.Input(index).GetAxis(buttonId); if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger) { if (itemInHand == null && axis.x >= grabThreshold && GetComponentInChildren <GrabTrigger>().things.Count > 0) { var thing = GetComponentInChildren <GrabTrigger>().things[0]; var item = thing as ObtainableItem; if (item != null) { itemInHand = item; itemInHand.Dispatch(ObtainableItemEventType.OnPickUp, this); } else { Actium.Dispatch("ViveHandInteractsWith_" + thing.name, this); } } } } } }
void DropItem(SteamVR_Controller.Device device) { if (itemInHand != null) { itemInHand.Dispatch(ObtainableItemEventType.OnDropOff, this); itemInHand.owner = null; itemInHand.GetComponent <Rigidbody>().velocity = device.velocity * 1.4f; itemInHand = null; } }
void Update() { var device = SteamVR_Controller.Input(index); /* foreach (var buttonId in buttonIds) { if (SteamVR_Controller.Input(index).GetPressDown(buttonId)) { } if (SteamVR_Controller.Input(index).GetPressUp(buttonId)) { } if (SteamVR_Controller.Input(index).GetPress(buttonId)) { } } */ foreach (var buttonId in axisIds) { if (SteamVR_Controller.Input(index).GetTouchDown(buttonId)) { //Debug.Log(buttonId + " touch down"); } if (SteamVR_Controller.Input(index).GetTouchUp(buttonId)) { if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger) { DropItem(device); } } if (SteamVR_Controller.Input(index).GetTouch(buttonId)) { var axis = SteamVR_Controller.Input(index).GetAxis(buttonId); if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger) { if (itemInHand == null && axis.x >= grabThreshold && GetComponentInChildren<GrabTrigger>().things.Count > 0) { var thing = GetComponentInChildren<GrabTrigger>().things[0]; var item = thing as ObtainableItem; if (item != null) { itemInHand = item; itemInHand.Dispatch(ObtainableItemEventType.OnPickUp, this); } else { Actium.Dispatch("ViveHandInteractsWith_" + thing.name, this); } } } } } }
void Update() { foreach (var index in controllerIndices) { //var controllerState = SteamVR_Controller.Input((int)index).GetState(); //var t = transform; //var baseTransform = new SteamVR_Utils.RigidTransform(t); var device = SteamVR_Controller.Input(index); // TODO: why it does return the position and rotation with a quite noticeable delay to a real position? /* * transform.position = device.transform.pos; * transform.rotation = device.transform.rot; */ foreach (var buttonId in buttonIds) { if (SteamVR_Controller.Input(index).GetPressDown(buttonId)) { if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger) { //Debug.Log("GRAB"); } } if (SteamVR_Controller.Input(index).GetPressUp(buttonId)) { /* * Debug.Log(buttonId + " press up"); * if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger) * { * SteamVR_Controller.Input(index).TriggerHapticPulse(); * PrintControllerStatus(index); * } */ } if (SteamVR_Controller.Input(index).GetPress(buttonId)) { //Debug.Log(buttonId); } } foreach (var buttonId in axisIds) { if (SteamVR_Controller.Input(index).GetTouchDown(buttonId)) { //Debug.Log(buttonId + " touch down"); } if (SteamVR_Controller.Input(index).GetTouchUp(buttonId)) { DropItem(device); } if (SteamVR_Controller.Input(index).GetTouch(buttonId)) { var axis = SteamVR_Controller.Input(index).GetAxis(buttonId); if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger) { if (axis.x >= grabThreshold && GetComponentInChildren <GrabTrigger>().things.Count > 0) { var thing = GetComponentInChildren <GrabTrigger>().things[0]; if (thing != null && thing.GetComponent <ObtainableItem>() != null && thing.GetComponent <ObtainableItem>().IsObtainable) { itemInHand = thing.GetComponent <ObtainableItem>(); itemInHand.Dispatch(ObtainableItemEventType.OnPickUp, this); } } else { DropItem(device); } } } } } }
void Update() { foreach (var index in controllerIndices) { //var controllerState = SteamVR_Controller.Input((int)index).GetState(); //var t = transform; //var baseTransform = new SteamVR_Utils.RigidTransform(t); var device = SteamVR_Controller.Input(index); // TODO: why it does return the position and rotation with a quite noticeable delay to a real position? /* transform.position = device.transform.pos; transform.rotation = device.transform.rot; */ foreach (var buttonId in buttonIds) { if (SteamVR_Controller.Input(index).GetPressDown(buttonId)) { if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger) { //Debug.Log("GRAB"); } } if (SteamVR_Controller.Input(index).GetPressUp(buttonId)) { /* Debug.Log(buttonId + " press up"); if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger) { SteamVR_Controller.Input(index).TriggerHapticPulse(); PrintControllerStatus(index); } */ } if (SteamVR_Controller.Input(index).GetPress(buttonId)) { //Debug.Log(buttonId); } } foreach (var buttonId in axisIds) { if (SteamVR_Controller.Input(index).GetTouchDown(buttonId)) { //Debug.Log(buttonId + " touch down"); } if (SteamVR_Controller.Input(index).GetTouchUp(buttonId)) { DropItem(device); } if (SteamVR_Controller.Input(index).GetTouch(buttonId)) { var axis = SteamVR_Controller.Input(index).GetAxis(buttonId); if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger) { if (axis.x >= grabThreshold && GetComponentInChildren<GrabTrigger>().things.Count > 0) { var thing = GetComponentInChildren<GrabTrigger>().things[0]; if (thing != null && thing.GetComponent<ObtainableItem>() != null && thing.GetComponent<ObtainableItem>().IsObtainable) { itemInHand = thing.GetComponent<ObtainableItem>(); itemInHand.Dispatch(ObtainableItemEventType.OnPickUp, this); } } else { DropItem(device); } } } } } }