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)); }
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))); }
/// <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; } }
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))); }
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); }
private bool ValidTarget(Transform target) { return(target && !(Utilities.TagOrScriptCheck(target.gameObject, targetTagOrScriptListPolicy, ignoreTargetWithTagOrClass))); }