Ejemplo n.º 1
0
        private bool ShouldIgnoreElement(GameObject obj, string ignoreCanvasWithTagOrClass, VRTK_TagOrScriptPolicyList canvasTagOrScriptListPolicy)
        {
            var canvas = obj.GetComponentInParent <Canvas>();

            if (!canvas)
            {
                return(false);
            }

            return(Utilities.TagOrScriptCheck(canvas.gameObject, canvasTagOrScriptListPolicy, ignoreCanvasWithTagOrClass));
        }
Ejemplo n.º 2
0
        protected virtual bool ValidDestination(Transform target, Vector3 destinationPosition)
        {
            bool validNavMeshLocation = false;

            if (target)
            {
                NavMeshHit hit;
                validNavMeshLocation = NavMesh.SamplePosition(destinationPosition, out hit, 0.1f, NavMesh.AllAreas);
            }
            if (navMeshCheckDistance == 0f)
            {
                validNavMeshLocation = true;
            }
            return(validNavMeshLocation && target && !(Utilities.TagOrScriptCheck(target.gameObject, invalidTagOrScriptListPolicy, invalidTargetWithTagOrClass)));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// The SetWorldCanvas method is used to initialise a `WorldSpace` canvas for use with the UI Pointer. This method is called automatically on start for all editor created canvases but would need to be manually called if a canvas was generated at runtime.
        /// </summary>
        /// <param name="canvas">The canvas object to initialise for use with the UI pointers. Must be of type `WorldSpace`.</param>
        public void SetWorldCanvas(Canvas canvas)
        {
            if (canvas.renderMode != RenderMode.WorldSpace || Utilities.TagOrScriptCheck(canvas.gameObject, canvasTagOrScriptListPolicy, ignoreCanvasWithTagOrClass))
            {
                RemoveUIPointerCanvas(canvas);
                return;
            }

            //copy public params then disable existing graphic raycaster
            var defaultRaycaster = canvas.gameObject.GetComponent <GraphicRaycaster>();
            var customRaycaster  = canvas.gameObject.GetComponent <VRTK_UIGraphicRaycaster>();

            //if it doesn't already exist, add the custom raycaster
            if (!customRaycaster)
            {
                customRaycaster = canvas.gameObject.AddComponent <VRTK_UIGraphicRaycaster>();
            }

            if (defaultRaycaster && defaultRaycaster.enabled)
            {
                customRaycaster.ignoreReversedGraphics = defaultRaycaster.ignoreReversedGraphics;
                customRaycaster.blockingObjects        = defaultRaycaster.blockingObjects;
                defaultRaycaster.enabled = false;
            }

            //add a box collider and background image to ensure the rays always hit
            var canvasSize = canvas.GetComponent <RectTransform>().sizeDelta;

            if (!canvas.gameObject.GetComponent <BoxCollider>())
            {
                var canvasBoxCollider = canvas.gameObject.AddComponent <BoxCollider>();
                canvasBoxCollider.size   = new Vector3(canvasSize.x, canvasSize.y, 10f);
                canvasBoxCollider.center = new Vector3(0f, 0f, 5f);
            }

            if (!canvas.gameObject.GetComponent <Image>())
            {
                canvas.gameObject.AddComponent <Image>().color = Color.clear;
            }
        }
Ejemplo n.º 4
0
        protected virtual bool ValidLocation(Transform target, Vector3 destinationPosition)
        {
            //If the target is one of the player objects or a UI Canvas then it's never a valid location
            if (target.GetComponent <VRTK_PlayerObject>() || target.GetComponent <VRTK_UIGraphicRaycaster>())
            {
                return(false);
            }

            bool validNavMeshLocation = false;

            if (target)
            {
                UnityEngine.AI.NavMeshHit hit;
                validNavMeshLocation = UnityEngine.AI.NavMesh.SamplePosition(destinationPosition, out hit, 0.1f, UnityEngine.AI.NavMesh.AllAreas);
            }
            if (navMeshLimitDistance == 0f)
            {
                validNavMeshLocation = true;
            }

            return(validNavMeshLocation && target && !(Utilities.TagOrScriptCheck(target.gameObject, targetTagOrScriptListPolicy, ignoreTargetWithTagOrClass)));
        }
Ejemplo n.º 5
0
 private bool ValidTarget(Collider collider)
 {
     return(!collider.GetComponent <VRTK_PlayerObject>() && !(Utilities.TagOrScriptCheck(collider.gameObject, targetTagOrScriptListPolicy, ignoreTargetWithTagOrClass)));
 }
        private VRTK_InteractableObject ValidSnapObject(GameObject checkObject, bool grabState)
        {
            var ioCheck = checkObject.GetComponentInParent <VRTK_InteractableObject>();

            return(ioCheck && ioCheck.IsGrabbed() == grabState && !Utilities.TagOrScriptCheck(checkObject, validObjectTagOrScriptListPolicy, validObjectWithTagOrClass, true) ? ioCheck : null);
        }
Ejemplo n.º 7
0
 private bool ValidTarget(Transform target)
 {
     return(target && !(Utilities.TagOrScriptCheck(target.gameObject, targetTagOrScriptListPolicy, ignoreTargetWithTagOrClass)));
 }