//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);
        }
Exemplo n.º 3
0
        //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;
                }
            }
        }