protected override void OnTouched(Collider collider) { if ((!VRTK_PlayerObject.IsPlayerObject(collider.gameObject) || VRTK_PlayerObject.IsPlayerObject(collider.gameObject, VRTK_PlayerObject.ObjectTypes.Controller)) && collider.GetComponent <VRTK_InteractNearTouchCollider>() == false) { base.OnTouched(collider); if (!isMoving) { Vector3 targetPosition = (!stayPressed && AtPressedPosition() ? originalLocalPosition : PressedPosition()); float targetSpeed = (!stayPressed && AtPressedPosition() ? returnSpeed : pressSpeed); if (!AtTargetPosition(targetPosition)) { positionLerpRoutine = StartCoroutine(PositionLerp(targetPosition, targetSpeed)); } } isTouched = true; } }
protected virtual void CreateCollider() { generateRigidbody = false; if (playArea == null) { VRTK_Logger.Error(VRTK_Logger.GetCommonMessage(VRTK_Logger.CommonMessageKeys.SDK_OBJECT_NOT_FOUND, "PlayArea", "Boundaries SDK")); return; } VRTK_PlayerObject.SetPlayerObject(playArea.gameObject, VRTK_PlayerObject.ObjectTypes.CameraRig); GenerateRigidbody(); GenerateBodyCollider(); if (playArea.gameObject.layer == 0) { playArea.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast"); } TogglePhysics(enableBodyCollisions); }
protected virtual GameObject CreateHighlightModel(GameObject givenOutlineModel, string givenOutlineModelPath) { if (givenOutlineModel != null) { givenOutlineModel = (givenOutlineModel.GetComponent <Renderer>() ? givenOutlineModel : givenOutlineModel.GetComponentInChildren <Renderer>().gameObject); } else if (givenOutlineModelPath != "") { var getChildModel = transform.FindChild(givenOutlineModelPath); givenOutlineModel = (getChildModel ? getChildModel.gameObject : null); } GameObject copyModel = givenOutlineModel; if (copyModel == null) { copyModel = (GetComponent <Renderer>() ? gameObject : GetComponentInChildren <Renderer>().gameObject); } if (copyModel == null) { Debug.LogError("No Renderer has been found on the model to add highlighting to"); return(null); } GameObject highlightModel = new GameObject(name + "_HighlightModel"); highlightModel.transform.SetParent(copyModel.transform.parent, false); highlightModel.transform.localPosition = copyModel.transform.localPosition; highlightModel.transform.localRotation = copyModel.transform.localRotation; highlightModel.transform.localScale = copyModel.transform.localScale; highlightModel.transform.SetParent(transform); foreach (var component in copyModel.GetComponents <Component>()) { if (Array.IndexOf(copyComponents, component.GetType().ToString()) >= 0) { VRTK_SharedMethods.CloneComponent(component, highlightModel); } } var copyMesh = copyModel.GetComponent <MeshFilter>(); var highlightMesh = highlightModel.GetComponent <MeshFilter>(); if (highlightMesh) { if (enableSubmeshHighlight) { List <CombineInstance> combine = new List <CombineInstance>(); for (int i = 0; i < copyMesh.mesh.subMeshCount; i++) { CombineInstance ci = new CombineInstance(); ci.mesh = copyMesh.mesh; ci.subMeshIndex = i; ci.transform = copyMesh.transform.localToWorldMatrix; combine.Add(ci); } highlightMesh.mesh = new Mesh(); highlightMesh.mesh.CombineMeshes(combine.ToArray(), true, false); } else { highlightMesh.mesh = copyMesh.mesh; } highlightModel.GetComponent <Renderer>().material = stencilOutline; } highlightModel.SetActive(false); VRTK_PlayerObject.SetPlayerObject(highlightModel, VRTK_PlayerObject.ObjectTypes.Highlighter); return(highlightModel); }
// Token: 0x06001D3B RID: 7483 RVA: 0x00095A7C File Offset: 0x00093C7C protected virtual GameObject CreateHighlightModel(GameObject givenOutlineModel, string givenOutlineModelPath) { if (givenOutlineModel != null) { givenOutlineModel = (givenOutlineModel.GetComponent <Renderer>() ? givenOutlineModel : givenOutlineModel.GetComponentInChildren <Renderer>().gameObject); } else if (givenOutlineModelPath != "") { Transform transform = base.transform.Find(givenOutlineModelPath); givenOutlineModel = (transform ? transform.gameObject : null); } GameObject gameObject = givenOutlineModel; if (gameObject == null) { gameObject = (base.GetComponent <Renderer>() ? base.gameObject : base.GetComponentInChildren <Renderer>().gameObject); } if (gameObject == null) { VRTK_Logger.Error(VRTK_Logger.GetCommonMessage(VRTK_Logger.CommonMessageKeys.REQUIRED_COMPONENT_MISSING_FROM_GAMEOBJECT, new object[] { "VRTK_OutlineObjectCopyHighlighter", "Renderer", "the same or child", " to add the highlighter to" })); return(null); } GameObject gameObject2 = new GameObject(base.name + "_HighlightModel"); gameObject2.transform.SetParent(gameObject.transform.parent, false); gameObject2.transform.localPosition = gameObject.transform.localPosition; gameObject2.transform.localRotation = gameObject.transform.localRotation; gameObject2.transform.localScale = gameObject.transform.localScale; gameObject2.transform.SetParent(base.transform); foreach (Component component in gameObject.GetComponents <Component>()) { if (Array.IndexOf <string>(this.copyComponents, component.GetType().ToString()) >= 0) { VRTK_SharedMethods.CloneComponent(component, gameObject2, false); } } MeshFilter component2 = gameObject.GetComponent <MeshFilter>(); MeshFilter component3 = gameObject2.GetComponent <MeshFilter>(); if (component3) { if (this.enableSubmeshHighlight) { List <CombineInstance> list = new List <CombineInstance>(); for (int j = 0; j < component2.mesh.subMeshCount; j++) { list.Add(new CombineInstance { mesh = component2.mesh, subMeshIndex = j, transform = component2.transform.localToWorldMatrix }); } component3.mesh = new Mesh(); component3.mesh.CombineMeshes(list.ToArray(), true, false); } else { component3.mesh = component2.mesh; } gameObject2.GetComponent <Renderer>().material = this.stencilOutline; } gameObject2.SetActive(false); VRTK_PlayerObject.SetPlayerObject(gameObject2, VRTK_PlayerObject.ObjectTypes.Highlighter); return(gameObject2); }
protected virtual bool CheckValidCollision(GameObject checkObject) { return(!VRTK_PlayerObject.IsPlayerObject(checkObject)); }
protected virtual Renderer CreateHighlightModel(GameObject givenOutlineModel, string givenOutlineModelPath) { if (givenOutlineModel != null) { givenOutlineModel = (givenOutlineModel.GetComponent <Renderer>() ? givenOutlineModel : givenOutlineModel.GetComponentInChildren <Renderer>().gameObject); } else if (givenOutlineModelPath != "") { Transform getChildModel = objectToAffect.transform.Find(givenOutlineModelPath); givenOutlineModel = (getChildModel ? getChildModel.gameObject : null); } GameObject copyModel = givenOutlineModel; if (copyModel == null) { Renderer copyModelRenderer = objectToAffect.GetComponentInChildren <Renderer>(); copyModel = (copyModelRenderer != null ? copyModelRenderer.gameObject : null); } if (copyModel == null) { VRTK_Logger.Error(VRTK_Logger.GetCommonMessage(VRTK_Logger.CommonMessageKeys.REQUIRED_COMPONENT_MISSING_FROM_GAMEOBJECT, "VRTK_OutlineObjectCopyHighlighter", "Renderer", "the same or child", " to add the highlighter to")); return(null); } GameObject highlightModel = new GameObject(objectToAffect.name + "_HighlightModel"); highlightModel.transform.SetParent(copyModel.transform.parent, false); highlightModel.transform.localPosition = copyModel.transform.localPosition; highlightModel.transform.localRotation = copyModel.transform.localRotation; highlightModel.transform.localScale = copyModel.transform.localScale; highlightModel.transform.SetParent(objectToAffect.transform); Component[] copyModelComponents = copyModel.GetComponents <Component>(); for (int i = 0; i < copyModelComponents.Length; i++) { Component copyModelComponent = copyModelComponents[i]; if (Array.IndexOf(copyComponents, copyModelComponent.GetType().ToString()) >= 0) { VRTK_SharedMethods.CloneComponent(copyModelComponent, highlightModel); } } MeshFilter copyMesh = copyModel.GetComponent <MeshFilter>(); MeshFilter highlightMesh = highlightModel.GetComponent <MeshFilter>(); Renderer returnHighlightModel = highlightModel.GetComponent <Renderer>(); if (highlightMesh != null) { if (enableSubmeshHighlight) { HashSet <CombineInstance> combine = new HashSet <CombineInstance>(); for (int i = 0; i < copyMesh.mesh.subMeshCount; i++) { CombineInstance ci = new CombineInstance(); ci.mesh = copyMesh.mesh; ci.subMeshIndex = i; ci.transform = copyMesh.transform.localToWorldMatrix; combine.Add(ci); } highlightMesh.mesh = new Mesh(); highlightMesh.mesh.CombineMeshes(combine.ToArray(), true, false); } else { highlightMesh.mesh = copyMesh.mesh; } returnHighlightModel.material = stencilOutline; returnHighlightModel.shadowCastingMode = copyModel.transform.GetComponent <Renderer>().shadowCastingMode; } highlightModel.SetActive(false); VRTK_PlayerObject.SetPlayerObject(highlightModel, VRTK_PlayerObject.ObjectTypes.Highlighter); return(returnHighlightModel); }
protected override void InitPointer() { pointerHolder = new GameObject(string.Format("[{0}]BasePointer_SimplePointer_Holder", gameObject.name)); pointerHolder.transform.localPosition = Vector3.zero; VRTK_PlayerObject.SetPlayerObject(pointerHolder, VRTK_PlayerObject.ObjectTypes.Pointer); pointerBeam = GameObject.CreatePrimitive(PrimitiveType.Cube); pointerBeam.transform.name = string.Format("[{0}]BasePointer_SimplePointer_Pointer", gameObject.name); pointerBeam.transform.SetParent(pointerHolder.transform); pointerBeam.GetComponent <BoxCollider>().isTrigger = true; pointerBeam.AddComponent <Rigidbody>().isKinematic = true; pointerBeam.layer = LayerMask.NameToLayer("Ignore Raycast"); var pointerRenderer = pointerBeam.GetComponent <MeshRenderer>(); pointerRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; pointerRenderer.receiveShadows = false; pointerRenderer.material = pointerMaterial; VRTK_PlayerObject.SetPlayerObject(pointerBeam, VRTK_PlayerObject.ObjectTypes.Pointer); if (customPointerCursor) { pointerTip = Instantiate(customPointerCursor); } else { pointerTip = GameObject.CreatePrimitive(PrimitiveType.Sphere); pointerTip.transform.localScale = pointerTipScale; var pointerTipRenderer = pointerTip.GetComponent <MeshRenderer>(); pointerTipRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; pointerTipRenderer.receiveShadows = false; pointerTipRenderer.material = pointerMaterial; } constructHighlight = Instantiate(highlightTemplate); constructHighlight.transform.SetParent(pointerHolder.transform); if (!showConstructHighlight) { constructHighlight.SetActive(false); } pointerCursorOriginalScale = pointerTip.transform.localScale; pointerTip.transform.name = string.Format("[{0}]BasePointer_SimplePointer_PointerTip", gameObject.name); pointerTip.transform.SetParent(pointerHolder.transform); pointerTip.GetComponent <Collider>().isTrigger = true; pointerTip.AddComponent <Rigidbody>().isKinematic = true; pointerTip.layer = LayerMask.NameToLayer("Ignore Raycast"); VRTK_PlayerObject.SetPlayerObject(pointerTip, VRTK_PlayerObject.ObjectTypes.Pointer); base.InitPointer(); if (showPointerTip && objectInteractor) { objectInteractor.transform.localScale = pointerTip.transform.localScale * 1.05f; } SetPointerTransform(pointerLength, pointerThickness); TogglePointer(false); }