Ejemplo n.º 1
0
        //Disable unity physics and collision. For moving item through code
        static public void FreezeItem(GameObject item, bool disableAllColliders = false, bool disableTriggerColliders = false, bool disableNonTriggerColliders = false)
        {
            VRInteractableItem.DisableObjectColliders(item, disableAllColliders, disableTriggerColliders, disableNonTriggerColliders);
            Rigidbody itemBody = item.GetComponent <Rigidbody>();

            if (itemBody != null)
            {
                RigidbodyMarker.ReplaceRigidbodyWithMarker(itemBody);
            }
        }
Ejemplo n.º 2
0
        //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;
            }
            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;
                }
            }

            /*Rigidbody itemBody = item.GetComponentInChildren<Rigidbody>();
             * if (itemBody != null)
             * {
             *      itemBody.useGravity = true;
             *      itemBody.isKinematic = false;
             *      itemBody.constraints = RigidbodyConstraints.None;
             *      itemBody.interpolation = RigidbodyInterpolation.Interpolate;
             * }*/
        }
Ejemplo n.º 3
0
        static public RigidbodyMarker ReplaceRigidbodyWithMarker(Rigidbody body)
        {
            body.isKinematic = true;

            RigidbodyMarker marker = body.GetComponent <RigidbodyMarker>();

            if (marker == null || marker.markToDestroy)
            {
                marker = body.gameObject.AddComponent <RigidbodyMarker>();
            }
            marker.mass               = body.mass;
            marker.drag               = body.drag;
            marker.angularDrag        = body.angularDrag;
            marker.useGravity         = body.useGravity;
            marker.isKinematic        = body.isKinematic;
            marker.interpolate        = body.interpolation;
            marker.collisionDetection = body.collisionDetectionMode;
            marker.constraints        = body.constraints;
            Destroy(body);
            return(marker);
        }
Ejemplo n.º 4
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;
                }
            }
        }