//Enable unity physics static public void UnFreezeItem(GameObject item) { Collider[] itemColliders = item.GetComponentsInChildren <Collider>(); foreach (Collider col in itemColliders) { VRInteractableItem ii = null; VRItemCollider ic = col.GetComponent <VRItemCollider>(); if (ic != null) { ii = ic.item; } if (ii == null) { ii = col.GetComponent <VRInteractableItem>(); } if (ii != null && (ii.parents.Count != 0 || !ii.enabled || ii.interactionDisabled)) { continue; } col.enabled = true; } Rigidbody itemBody = item.GetComponentInChildren <Rigidbody>(); if (itemBody != null) { itemBody.useGravity = true; itemBody.isKinematic = false; itemBody.constraints = RigidbodyConstraints.None; itemBody.interpolation = RigidbodyInterpolation.Interpolate; } }
/// <summary> /// Gets any connected VRInteractableItem. /// </summary> /// <returns>The item.</returns> /// <param name="target">Target.</param> static public VRInteractableItem GetItem(GameObject target) { if (target == null) { return(null); } VRInteractableItem ii = target.GetComponent <VRInteractableItem>(); if (ii != null) { return(ii); } //If the item isn't on the target it could have an itemCollider that would reference the item VRItemCollider itemCollider = target.GetComponent <VRItemCollider>(); if (itemCollider != null && itemCollider.col.isTrigger) { ii = itemCollider.item; } if (ii != null) { return(ii); } return(null); }
//Set item up to be held correctly static public void HeldFreezeItem(GameObject item) { Collider[] itemColliders = item.GetComponentsInChildren <Collider>(); foreach (Collider col in itemColliders) { VRInteractableItem ii = null; VRItemCollider ic = col.GetComponent <VRItemCollider>(); if (ic != null) { ii = ic.item; } if (ii == null) { ii = col.GetComponent <VRInteractableItem>(); } if (ii != null && (ii.parents.Count != 0 || !ii.enabled || ii.interactionDisabled)) { continue; } col.enabled = true; } RigidbodyMarker bodyMarker = item.GetComponent <RigidbodyMarker>(); if (bodyMarker != null) { Rigidbody body = bodyMarker.ReplaceMarkerWithRigidbody(); body.isKinematic = false; } else { Rigidbody body = item.GetComponent <Rigidbody>(); if (body != null) { body.isKinematic = false; } } }