Exemplo n.º 1
0
        protected virtual void ToggleRigidbody(Collider collider, bool state)
        {
            if (isEnabled || !state)
            {
                if (activateTrackedCollider)
                {
                    VRTK_ControllerTrackedCollider trackedCollider = collider.GetComponentInParent <VRTK_ControllerTrackedCollider>();
                    if (trackedCollider != null)
                    {
                        trackedCollider.ToggleColliders(state);
                        EmitEvent(state, trackedCollider.interactTouch);
                    }
                }

                if (activateInteractTouch)
                {
                    VRTK_InteractTouch touch = collider.GetComponentInParent <VRTK_InteractTouch>();
                    if (touch != null)
                    {
                        touch.ToggleControllerRigidBody(state, state);
                        EmitEvent(state, touch);
                    }
                }
            }
        }
        protected virtual void ManageTouchCollision(VRTK_InteractTouch touchToIgnore, bool ignore)
        {
            Collider[] interactTouchColliders = touchToIgnore.ControllerColliders();
            VRTK_ControllerTrackedCollider trackedColliderValue = VRTK_SharedMethods.GetDictionaryValue(VRTK_ObjectCache.registeredTrackedColliderToInteractTouches, touchToIgnore);

            if (trackedColliderValue != null)
            {
                Collider[] trackedColliders = trackedColliderValue.TrackedColliders();
                interactTouchColliders = interactTouchColliders.Concat(trackedColliders).ToArray();
            }

            for (int touchCollidersIndex = 0; touchCollidersIndex < interactTouchColliders.Length; touchCollidersIndex++)
            {
                for (int localCollidersIndex = 0; localCollidersIndex < localColliders.Length; localCollidersIndex++)
                {
                    if (localColliders[localCollidersIndex] != null && interactTouchColliders[touchCollidersIndex] != null && !ShouldExclude(localColliders[localCollidersIndex].transform))
                    {
                        Physics.IgnoreCollision(localColliders[localCollidersIndex], interactTouchColliders[touchCollidersIndex], ignore);
                    }
                }
            }
        }