示例#1
0
        protected virtual void CreateObjectInteractor()
        {
            objectInteractor = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "BasePointerRenderer_ObjectInteractor_Container"));
            objectInteractor.transform.SetParent(controllingPointer.controllerEvents.transform);
            objectInteractor.transform.localPosition = Vector3.zero;
            objectInteractor.layer = LayerMask.NameToLayer("Ignore Raycast");
            VRTK_PlayerObject.SetPlayerObject(objectInteractor, VRTK_PlayerObject.ObjectTypes.Pointer);

            GameObject objectInteractorCollider = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "BasePointerRenderer_ObjectInteractor_Collider"));

            objectInteractorCollider.transform.SetParent(objectInteractor.transform);
            objectInteractorCollider.transform.localPosition = Vector3.zero;
            objectInteractorCollider.layer = LayerMask.NameToLayer("Ignore Raycast");
            SphereCollider tmpCollider = objectInteractorCollider.AddComponent <SphereCollider>();

            tmpCollider.isTrigger = true;
            VRTK_PlayerObject.SetPlayerObject(objectInteractorCollider, VRTK_PlayerObject.ObjectTypes.Pointer);

            if (controllingPointer.grabToPointerTip)
            {
                objectInteractorAttachPoint = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "BasePointerRenderer_ObjectInteractor_AttachPoint"));
                objectInteractorAttachPoint.transform.SetParent(objectInteractor.transform);
                objectInteractorAttachPoint.transform.localPosition = Vector3.zero;
                objectInteractorAttachPoint.layer = LayerMask.NameToLayer("Ignore Raycast");
                Rigidbody objectInteratorRigidBody = objectInteractorAttachPoint.AddComponent <Rigidbody>();
                objectInteratorRigidBody.isKinematic            = true;
                objectInteratorRigidBody.freezeRotation         = true;
                objectInteratorRigidBody.collisionDetectionMode = CollisionDetectionMode.ContinuousSpeculative;
                VRTK_PlayerObject.SetPlayerObject(objectInteractorAttachPoint, VRTK_PlayerObject.ObjectTypes.Pointer);
            }

            ScaleObjectInteractor(Vector3.one);
            objectInteractor.SetActive(false);
        }
 protected virtual void CreatePointerOriginTransformFollow()
 {
     pointerOriginTransformFollowGameObject    = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "BasePointerRenderer_Origin_Smoothed"));
     pointerOriginTransformFollow              = pointerOriginTransformFollowGameObject.AddComponent <VRTK_TransformFollow>();
     pointerOriginTransformFollow.enabled      = false;
     pointerOriginTransformFollow.followsScale = false;
 }
示例#3
0
 protected virtual void CreateTouchCollider()
 {
     if (customColliderContainer == null)
     {
         if (!defaultColliderPrefab)
         {
             VRTK_Logger.Error(VRTK_Logger.GetCommonMessage(VRTK_Logger.CommonMessageKeys.SDK_OBJECT_NOT_FOUND, "default collider prefab", "Controller SDK"));
             return;
         }
         controllerCollisionDetector = Instantiate(defaultColliderPrefab, transform.position, transform.rotation) as GameObject;
         controllerCollisionDetector.transform.SetParent(transform);
         controllerCollisionDetector.transform.localScale = transform.localScale;
         controllerCollisionDetector.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, "Controller", "CollidersContainer");
         destroyColliderOnDisable         = true;
     }
     else
     {
         if (CustomRigidBodyIsChild())
         {
             controllerCollisionDetector = customColliderContainer;
             destroyColliderOnDisable    = false;
         }
         else
         {
             controllerCollisionDetector = Instantiate(customColliderContainer, transform.position, transform.rotation) as GameObject;
             controllerCollisionDetector.transform.SetParent(transform);
             controllerCollisionDetector.transform.localScale = transform.localScale;
             destroyColliderOnDisable = true;
         }
     }
     controllerCollisionDetector.AddComponent <VRTK_PlayerObject>().objectType = VRTK_PlayerObject.ObjectTypes.Collider;
 }
示例#4
0
 // Token: 0x06001723 RID: 5923 RVA: 0x0007C15C File Offset: 0x0007A35C
 public static void CreateIfNotExists()
 {
     if (VRTK_Logger.instance == null)
     {
         VRTK_Logger.instance = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
         {
             "Logger"
         }))
         {
             hideFlags = (HideFlags.HideInHierarchy | HideFlags.DontSaveInEditor)
         }.AddComponent <VRTK_Logger>();
     }
     if (VRTK_Logger.commonMessageParts.Count != VRTK_Logger.commonMessages.Count)
     {
         VRTK_Logger.commonMessageParts.Clear();
         foreach (KeyValuePair <VRTK_Logger.CommonMessageKeys, string> keyValuePair in VRTK_Logger.commonMessages)
         {
             int value = Regex.Matches(keyValuePair.Value, "(?<!\\{)\\{([0-9]+).*?\\}(?!})").Cast <Match>().DefaultIfEmpty <Match>().Max(delegate(Match m)
             {
                 if (m != null)
                 {
                     return(int.Parse(m.Groups[1].Value));
                 }
                 return(-1);
             }) + 1;
             VRTK_Logger.commonMessageParts.Add(keyValuePair.Key, value);
         }
     }
 }
示例#5
0
        protected virtual void CreateCursorLocations()
        {
            if (validLocationObject != null)
            {
                actualValidLocationObject      = Instantiate(validLocationObject);
                actualValidLocationObject.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "BezierPointerRenderer_ValidLocation");
                actualValidLocationObject.transform.SetParent(actualCursor.transform);
                actualValidLocationObject.layer = LayerMask.NameToLayer("Ignore Raycast");
                actualValidLocationObject.SetActive(false);

                if (customCursor)
                {
                    actualValidLocationObject.transform.localScale *= cursorRadius / 0.5f;
                }
            }

            if (invalidLocationObject != null)
            {
                actualInvalidLocationObject      = Instantiate(invalidLocationObject);
                actualInvalidLocationObject.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "BezierPointerRenderer_InvalidLocation");
                actualInvalidLocationObject.transform.SetParent(actualCursor.transform);
                actualInvalidLocationObject.layer = LayerMask.NameToLayer("Ignore Raycast");
                actualInvalidLocationObject.SetActive(false);

                if (customCursor)
                {
                    actualInvalidLocationObject.transform.localScale *= cursorRadius / 0.5f;
                }
            }
        }
示例#6
0
 // Token: 0x060018B0 RID: 6320 RVA: 0x0008341C File Offset: 0x0008161C
 protected virtual void CreateCursorLocations()
 {
     if (this.validLocationObject != null)
     {
         this.actualValidLocationObject      = Object.Instantiate <GameObject>(this.validLocationObject);
         this.actualValidLocationObject.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
         {
             base.gameObject.name,
             "BezierPointerRenderer_ValidLocation"
         });
         this.actualValidLocationObject.transform.SetParent(this.actualCursor.transform);
         this.actualValidLocationObject.layer = LayerMask.NameToLayer("Ignore Raycast");
         this.actualValidLocationObject.SetActive(false);
     }
     if (this.invalidLocationObject != null)
     {
         this.actualInvalidLocationObject      = Object.Instantiate <GameObject>(this.invalidLocationObject);
         this.actualInvalidLocationObject.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
         {
             base.gameObject.name,
             "BezierPointerRenderer_InvalidLocation"
         });
         this.actualInvalidLocationObject.transform.SetParent(this.actualCursor.transform);
         this.actualInvalidLocationObject.layer = LayerMask.NameToLayer("Ignore Raycast");
         this.actualInvalidLocationObject.SetActive(false);
     }
 }
        protected virtual void SetupColliders()
        {
            createColliders = false;
            Collider[] foundColliders = VRTK_SharedMethods.GetCollidersInGameObjects(new GameObject[] { gameObject }, true, true);
            if (foundColliders.Length == 0)
            {
                Object defaultColliderPrefab = Resources.Load(VRTK_SDK_Bridge.GetControllerDefaultColliderPath(controllerReference.hand));
                if (defaultColliderPrefab == null)
                {
                    VRTK_Logger.Error(VRTK_Logger.GetCommonMessage(VRTK_Logger.CommonMessageKeys.SDK_OBJECT_NOT_FOUND, "default collider prefab", "Controller SDK"));
                    return;
                }
                createColliders         = true;
                customColliderContainer = Instantiate(defaultColliderPrefab) as GameObject;
                customColliderContainer.transform.SetParent(transform);
                customColliderContainer.transform.localPosition = Vector3.zero;
                customColliderContainer.transform.localRotation = Quaternion.identity;
                customColliderContainer.transform.localScale    = Vector3.one;
                customColliderContainer.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, "Controller", "TrackedCollidersContainer");
                foundColliders = VRTK_SharedMethods.GetCollidersInGameObjects(new GameObject[] { gameObject }, true, true);
            }
            trackedColliders = foundColliders;

            Collider[] touchColliders = interactTouch.ControllerColliders();

            for (int touchColliderIndex = 0; touchColliderIndex < touchColliders.Length; touchColliderIndex++)
            {
                for (int trackedColliderIndex = 0; trackedColliderIndex < trackedColliders.Length; trackedColliderIndex++)
                {
                    Physics.IgnoreCollision(touchColliders[touchColliderIndex], trackedColliders[trackedColliderIndex], true);
                }
            }
        }
示例#8
0
        protected virtual void GeneratePlayAreaCursorFromPrefab(Vector3[] cursorDrawVertices)
        {
            playAreaCursor = new GameObject(GeneratePlayAreaCursorName());

            float width  = cursorDrawVertices[btmRightOuter].x - cursorDrawVertices[topLeftOuter].x;
            float length = cursorDrawVertices[topLeftOuter].z - cursorDrawVertices[btmRightOuter].z;

            if (playAreaCursorDimensions != Vector2.zero)
            {
                width  = (playAreaCursorDimensions.x == 0 ? playAreaCursor.transform.localScale.x : playAreaCursorDimensions.x);
                length = (playAreaCursorDimensions.y == 0 ? playAreaCursor.transform.localScale.z : playAreaCursorDimensions.y);
            }
            float height = 0.01f;

            playAreaCursorValidChild      = Instantiate(validLocationObject);
            playAreaCursorValidChild.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, "ValidArea");
            playAreaCursorValidChild.transform.SetParent(playAreaCursor.transform);

            if (invalidLocationObject != null)
            {
                playAreaCursorInvalidChild      = Instantiate(invalidLocationObject);
                playAreaCursorInvalidChild.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, "InvalidArea");
                playAreaCursorInvalidChild.transform.SetParent(playAreaCursor.transform);
            }

            playAreaCursor.transform.localScale           = new Vector3(width, height, length);
            playAreaCursorValidChild.transform.localScale = Vector3.one;
            if (invalidLocationObject != null)
            {
                playAreaCursorInvalidChild.transform.localScale = Vector3.one;
            }
            playAreaCursor.SetActive(false);
        }
示例#9
0
 // Token: 0x06001937 RID: 6455 RVA: 0x00086507 File Offset: 0x00084707
 protected virtual string GeneratePlayAreaCursorName()
 {
     return(VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
     {
         base.gameObject.name,
         "PlayAreaCursor"
     }));
 }
示例#10
0
 protected virtual void CreateCursor()
 {
     actualCursor = (customCursor ? Instantiate(customCursor) : CreateCursorObject());
     CreateCursorLocations();
     actualCursor.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "BezierPointerRenderer_Cursor");
     VRTK_PlayerObject.SetPlayerObject(actualCursor, VRTK_PlayerObject.ObjectTypes.Pointer);
     actualCursor.layer = LayerMask.NameToLayer("Ignore Raycast");
     actualCursor.SetActive(false);
 }
示例#11
0
 protected override void OnEnable()
 {
     base.OnEnable();
     SetupPlayArea();
     SetupHeadset();
     footColliderContainerNameCheck = VRTK_SharedMethods.GenerateVRTKObjectName(true, FOOT_COLLIDER_CONTAINER_NAME);
     EnableDropToFloor();
     EnableBodyPhysics();
 }
        protected virtual Transform CreateAttachPoint(string namePrefix, string nameSuffix, Transform origin)
        {
            Transform attachPoint = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, namePrefix, nameSuffix, "Controller", "AttachPoint")).transform;

            attachPoint.parent   = transform;
            attachPoint.position = origin.position;
            attachPoint.rotation = origin.rotation;
            return(attachPoint);
        }
示例#13
0
        private void CreateOrDestroyDebugVisualization()
        {
            if (!Application.isPlaying)
            {
                return;
            }

            if (enabled && drawDebugVisualization && debugVisualizationQuad == null)
            {
                var mesh = new Mesh
                {
                    vertices =
                        new[]
                    {
                        new Vector3(-0.5f, 0.9f, 1.0f),
                        new Vector3(-0.5f, 1.0f, 1.0f),
                        new Vector3(0.5f, 1.0f, 1.0f),
                        new Vector3(0.5f, 0.9f, 1.0f)
                    },
                    uv =
                        new[]
                    {
                        new Vector2(0.0f, 0.0f),
                        new Vector2(0.0f, 1.0f),
                        new Vector2(1.0f, 1.0f),
                        new Vector2(1.0f, 0.0f)
                    },
                    triangles = new[] { 0, 1, 2, 0, 2, 3 }
                };
#if !UNITY_5_5_OR_NEWER
                mesh.Optimize();
#endif
                mesh.UploadMeshData(true);

                debugVisualizationQuad = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, "AdaptiveQualityDebugVisualizationQuad"));
                if (VRTK_SDKManager.instance)
                {
                    debugVisualizationQuad.transform.SetParent(VRTK_DeviceFinder.HeadsetTransform());
                }
                debugVisualizationQuad.transform.localPosition          = Vector3.forward;
                debugVisualizationQuad.transform.localRotation          = Quaternion.identity;
                debugVisualizationQuad.AddComponent <MeshFilter>().mesh = mesh;

                debugVisualizationQuadMaterial = Resources.Load <Material>("AdaptiveQualityDebugVisualization");
                debugVisualizationQuad.AddComponent <MeshRenderer>().material = debugVisualizationQuadMaterial;
            }
            else if ((!enabled || !drawDebugVisualization) && debugVisualizationQuad != null)
            {
                Destroy(debugVisualizationQuad);

                debugVisualizationQuad         = null;
                debugVisualizationQuadMaterial = null;
            }
        }
示例#14
0
 // Token: 0x06001B94 RID: 7060 RVA: 0x000907BC File Offset: 0x0008E9BC
 private void CreateOrDestroyDebugVisualization()
 {
     if (!Application.isPlaying)
     {
         return;
     }
     if (base.enabled && this.drawDebugVisualization && this.debugVisualizationQuad == null)
     {
         Mesh mesh = new Mesh
         {
             vertices = new Vector3[]
             {
                 new Vector3(-0.5f, 0.9f, 1f),
                 new Vector3(-0.5f, 1f, 1f),
                 new Vector3(0.5f, 1f, 1f),
                 new Vector3(0.5f, 0.9f, 1f)
             },
             uv = new Vector2[]
             {
                 new Vector2(0f, 0f),
                 new Vector2(0f, 1f),
                 new Vector2(1f, 1f),
                 new Vector2(1f, 0f)
             },
             triangles = new int[]
             {
                 0,
                 1,
                 2,
                 0,
                 2,
                 3
             }
         };
         mesh.UploadMeshData(true);
         this.debugVisualizationQuad = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
         {
             "AdaptiveQualityDebugVisualizationQuad"
         }));
         this.debugVisualizationQuad.transform.parent                 = VRTK_DeviceFinder.HeadsetTransform();
         this.debugVisualizationQuad.transform.localPosition          = Vector3.forward;
         this.debugVisualizationQuad.transform.localRotation          = Quaternion.identity;
         this.debugVisualizationQuad.AddComponent <MeshFilter>().mesh = mesh;
         this.debugVisualizationQuadMaterial = Resources.Load <Material>("AdaptiveQualityDebugVisualization");
         this.debugVisualizationQuad.AddComponent <MeshRenderer>().material = this.debugVisualizationQuadMaterial;
         return;
     }
     if ((!base.enabled || !this.drawDebugVisualization) && this.debugVisualizationQuad != null)
     {
         Object.Destroy(this.debugVisualizationQuad);
         this.debugVisualizationQuad         = null;
         this.debugVisualizationQuadMaterial = null;
     }
 }
示例#15
0
 protected virtual void CreateHeadsetColliderContainer()
 {
     if (headsetColliderContainer == null)
     {
         headsetColliderContainer = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, "HeadsetColliderContainer"));
         headsetColliderContainer.transform.position      = Vector3.zero;
         headsetColliderContainer.transform.localRotation = headset.localRotation;
         headsetColliderContainer.transform.localScale    = Vector3.one;
         headsetColliderContainer.layer = LayerMask.NameToLayer("Ignore Raycast");
     }
 }
示例#16
0
        protected virtual GameObject CreateSphere()
        {
            customTracer = false;
            GameObject item = GameObject.CreatePrimitive(PrimitiveType.Sphere);

            item.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, "Sphere");
            Destroy(item.GetComponent <SphereCollider>());
            item.GetComponent <MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
            item.GetComponent <MeshRenderer>().receiveShadows    = false;

            return(item);
        }
示例#17
0
 // Token: 0x060018B1 RID: 6321 RVA: 0x0008353C File Offset: 0x0008173C
 protected virtual void CreateCursor()
 {
     this.actualCursor = (this.customCursor ? Object.Instantiate <GameObject>(this.customCursor) : this.CreateCursorObject());
     this.CreateCursorLocations();
     this.actualCursor.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
     {
         base.gameObject.name,
         "BezierPointerRenderer_Cursor"
     });
     VRTK_PlayerObject.SetPlayerObject(this.actualCursor, VRTK_PlayerObject.ObjectTypes.Pointer);
     this.actualCursor.layer = LayerMask.NameToLayer("Ignore Raycast");
     this.actualCursor.SetActive(false);
 }
示例#18
0
        protected virtual void CreateNearTouchCollider()
        {
            if (customColliderContainer == null)
            {
                neartouchColliderContainer = new GameObject();
                neartouchColliderContainer.transform.SetParent(interactTouch.transform);
                neartouchColliderContainer.transform.localPosition = Vector3.zero;
                neartouchColliderContainer.transform.localRotation = Quaternion.identity;
                neartouchColliderContainer.transform.localScale    = interactTouch.transform.localScale;
            }
            else
            {
                neartouchColliderContainer = Instantiate(customColliderContainer);
                neartouchColliderContainer.transform.SetParent(interactTouch.transform);
                neartouchColliderContainer.transform.localPosition = customColliderContainer.transform.localPosition;
                neartouchColliderContainer.transform.localRotation = customColliderContainer.transform.localRotation;
                neartouchColliderContainer.transform.localScale    = customColliderContainer.transform.localScale;
            }

            neartouchColliderContainer.layer = 2;

            neartouchColliderContainer.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, "Controller", "NearTouch", "CollidersContainer");

            Rigidbody attachedRigidbody = neartouchColliderContainer.GetComponentInChildren <Rigidbody>();

            if (attachedRigidbody == null)
            {
                attachedRigidbody = neartouchColliderContainer.AddComponent <Rigidbody>();
            }

            attachedRigidbody.isKinematic = true;
            attachedRigidbody.constraints = RigidbodyConstraints.FreezeRotation;

            Collider attachedCollider = neartouchColliderContainer.GetComponentInChildren <Collider>();

            if (attachedCollider == null)
            {
                SphereCollider attachedSphereCollider = neartouchColliderContainer.AddComponent <SphereCollider>();
                attachedSphereCollider.isTrigger = true;
                attachedSphereCollider.radius    = colliderRadius;
            }
            else
            {
                attachedCollider.isTrigger = true;
            }

            interactNearTouchColliderScript = neartouchColliderContainer.AddComponent <VRTK_InteractNearTouchCollider>();
            interactNearTouchColliderScript.SetInteractNearTouch(this);

            neartouchColliderContainer.SetActive(true);
        }
示例#19
0
        // Token: 0x06001706 RID: 5894 RVA: 0x0007B8BC File Offset: 0x00079ABC
        protected virtual GameObject CreateSphere()
        {
            this.customTracer = false;
            GameObject gameObject = GameObject.CreatePrimitive(PrimitiveType.Sphere);

            gameObject.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
            {
                "Sphere"
            });
            Object.Destroy(gameObject.GetComponent <SphereCollider>());
            gameObject.GetComponent <MeshRenderer>().shadowCastingMode = ShadowCastingMode.Off;
            gameObject.GetComponent <MeshRenderer>().receiveShadows    = false;
            return(gameObject);
        }
示例#20
0
        protected virtual void CreateTouchCollider()
        {
            SDK_BaseController.ControllerHand controllerHand = VRTK_DeviceFinder.GetControllerHand(gameObject);
            string colliderPath = VRTK_SDK_Bridge.GetControllerDefaultColliderPath(controllerHand);

            if (colliderPath == "")
            {
                return;
            }
            Object defaultColliderPrefab = Resources.Load(colliderPath);

            if (customColliderContainer == null)
            {
                if (defaultColliderPrefab == null)
                {
                    VRTK_Logger.Error(VRTK_Logger.GetCommonMessage(VRTK_Logger.CommonMessageKeys.SDK_OBJECT_NOT_FOUND, "default collider prefab", "Controller SDK"));
                    return;
                }
                if (destroyColliderOnDisable)
                {
                    Destroy(controllerCollisionDetector);
                }
                controllerCollisionDetector = Instantiate(defaultColliderPrefab, transform.position, transform.rotation) as GameObject;
                controllerCollisionDetector.transform.SetParent(transform);
                controllerCollisionDetector.transform.localScale = transform.localScale;
                controllerCollisionDetector.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, "Controller", "CollidersContainer");
                destroyColliderOnDisable         = true;
            }
            else
            {
                if (destroyColliderOnDisable)
                {
                    Destroy(controllerCollisionDetector);
                }

                if (CustomRigidBodyIsChild())
                {
                    controllerCollisionDetector = customColliderContainer;
                    destroyColliderOnDisable    = false;
                }
                else
                {
                    controllerCollisionDetector = Instantiate(customColliderContainer, transform.position, transform.rotation) as GameObject;
                    controllerCollisionDetector.transform.SetParent(transform);
                    controllerCollisionDetector.transform.localScale = transform.localScale;
                    destroyColliderOnDisable = true;
                }
            }
            controllerCollisionDetector.AddComponent <VRTK_PlayerObject>().objectType = VRTK_PlayerObject.ObjectTypes.Collider;
        }
示例#21
0
        protected virtual GameObject CreateColliderContainer(string name, Transform parent)
        {
            GameObject generatedContainer = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, name));

            generatedContainer.transform.SetParent(parent);
            generatedContainer.transform.localPosition = Vector3.zero;
            generatedContainer.transform.localRotation = Quaternion.identity;
            generatedContainer.transform.localScale    = Vector3.one;

            generatedContainer.layer = LayerMask.NameToLayer("Ignore Raycast");
            VRTK_PlayerObject.SetPlayerObject(generatedContainer, VRTK_PlayerObject.ObjectTypes.Collider);

            return(generatedContainer);
        }
        protected override void CreatePointerObjects()
        {
            actualContainer = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "StraightPointerRenderer_Container"));
            actualContainer.transform.localPosition = Vector3.zero;
            VRTK_PlayerObject.SetPlayerObject(actualContainer, VRTK_PlayerObject.ObjectTypes.Pointer);

            CreateTracer();
            CreateCursor();
            Toggle(false, false);
            if (controllingPointer)
            {
                controllingPointer.ResetActivationTimer(true);
                controllingPointer.ResetSelectionTimer(true);
            }
        }
示例#23
0
        protected virtual void CreateCursor()
        {
            actualCursor = (customCursor != null ? Instantiate(customCursor) : CreateCursorObject());

            if (customCursor)
            {
                actualCursor.transform.localScale = new Vector3(cursorRadius / 0.5f, 1, cursorRadius / 0.5f);
            }

            CreateCursorLocations();
            actualCursor.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "BezierPointerRenderer_Cursor");
            VRTK_PlayerObject.SetPlayerObject(actualCursor, VRTK_PlayerObject.ObjectTypes.Pointer);
            actualCursor.layer = LayerMask.NameToLayer("Ignore Raycast");
            actualCursor.SetActive(false);
        }
示例#24
0
        protected override void CreatePointerObjects()
        {
            actualContainer = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "BezierPointerRenderer_Container"));
            VRTK_PlayerObject.SetPlayerObject(actualContainer, VRTK_PlayerObject.ObjectTypes.Pointer);
            actualContainer.SetActive(false);

            CreateTracer();
            CreateCursor();
            Toggle(false, false);
            if (controllingPointer != null)
            {
                controllingPointer.ResetActivationTimer(true);
                controllingPointer.ResetSelectionTimer(true);
            }
        }
示例#25
0
 // Token: 0x060018AA RID: 6314 RVA: 0x000831EC File Offset: 0x000813EC
 protected override void CreatePointerObjects()
 {
     this.actualContainer = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
     {
         base.gameObject.name,
         "BezierPointerRenderer_Container"
     }));
     VRTK_PlayerObject.SetPlayerObject(this.actualContainer, VRTK_PlayerObject.ObjectTypes.Pointer);
     this.actualContainer.SetActive(false);
     this.CreateTracer();
     this.CreateCursor();
     this.Toggle(false, false);
     if (this.controllingPointer)
     {
         this.controllingPointer.ResetActivationTimer(true);
         this.controllingPointer.ResetSelectionTimer(true);
     }
 }
示例#26
0
        public virtual void Create(int setFrequency, float radius, GameObject tracer, bool rescaleTracer = false)
        {
            float circleSize = radius / 8;

            frequency           = setFrequency;
            customLineRenderer  = (tracer != null ? tracer.GetComponent <LineRenderer>() : null);
            lineRendererAndItem = (customLineRenderer != null && tracer.GetComponentInChildren <MeshFilter>());
            if (customLineRenderer != null)
            {
                tracerLineRenderer      = Instantiate(tracer);
                tracerLineRenderer.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, name, "LineRenderer");
                for (int i = 0; i < tracerLineRenderer.transform.childCount; i++)
                {
                    Destroy(tracerLineRenderer.transform.GetChild(i).gameObject);
                }
                customLineRenderer = tracerLineRenderer.GetComponent <LineRenderer>();
#if UNITY_5_5
                customLineRenderer.numPositions = frequency;
#elif UNITY_5_6_OR_NEWER
                customLineRenderer.positionCount = frequency;
#else
                customLineRenderer.SetVertexCount(frequency);
#endif
            }

            if (customLineRenderer == null || lineRendererAndItem)
            {
                items = new GameObject[frequency];
                for (int f = 0; f < items.Length; f++)
                {
                    customTracer = true;
                    items[f]     = (tracer != null ? Instantiate(tracer) : CreateSphere());
                    items[f].transform.SetParent(transform);
                    items[f].layer = LayerMask.NameToLayer("Ignore Raycast");
                    items[f].transform.localScale = new Vector3(circleSize, circleSize, circleSize);
                    if (customLineRenderer != null)
                    {
                        Destroy(items[f].GetComponent <LineRenderer>());
                    }
                }
            }

            rescalePointerTracer = rescaleTracer;
        }
示例#27
0
        protected virtual void DrawPlayAreaCursorBoundary(int index, float left, float right, float top, float bottom, float thickness, Vector3 localPosition)
        {
            GameObject playAreaCursorBoundary = GameObject.CreatePrimitive(PrimitiveType.Cube);

            playAreaCursorBoundary.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "PlayAreaCursorBoundary", index);
            VRTK_PlayerObject.SetPlayerObject(playAreaCursorBoundary, VRTK_PlayerObject.ObjectTypes.Pointer);

            float width  = (right - left) / 1.065f;
            float length = (top - bottom) / 1.08f;
            float height = thickness;

            playAreaCursorBoundary.transform.localScale = new Vector3(width, height, length);
            Destroy(playAreaCursorBoundary.GetComponent <BoxCollider>());
            playAreaCursorBoundary.layer = LayerMask.NameToLayer("Ignore Raycast");

            playAreaCursorBoundary.transform.SetParent(playAreaCursor.transform);
            playAreaCursorBoundary.transform.localPosition = localPosition;

            playAreaCursorBoundaries[index] = playAreaCursorBoundary;
        }
示例#28
0
        // Token: 0x0600189F RID: 6303 RVA: 0x00082D4C File Offset: 0x00080F4C
        protected virtual void CreateObjectInteractor()
        {
            this.objectInteractor = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
            {
                base.gameObject.name,
                "BasePointerRenderer_ObjectInteractor_Container"
            }));
            this.objectInteractor.transform.SetParent(this.controllingPointer.controller.transform);
            this.objectInteractor.transform.localPosition = Vector3.zero;
            this.objectInteractor.layer = LayerMask.NameToLayer("Ignore Raycast");
            VRTK_PlayerObject.SetPlayerObject(this.objectInteractor, VRTK_PlayerObject.ObjectTypes.Pointer);
            GameObject gameObject = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
            {
                base.gameObject.name,
                "BasePointerRenderer_ObjectInteractor_Collider"
            }));

            gameObject.transform.SetParent(this.objectInteractor.transform);
            gameObject.transform.localPosition = Vector3.zero;
            gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");
            gameObject.AddComponent <SphereCollider>().isTrigger = true;
            VRTK_PlayerObject.SetPlayerObject(gameObject, VRTK_PlayerObject.ObjectTypes.Pointer);
            if (this.controllingPointer.grabToPointerTip)
            {
                this.objectInteractorAttachPoint = new GameObject(VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
                {
                    base.gameObject.name,
                    "BasePointerRenderer_ObjectInteractor_AttachPoint"
                }));
                this.objectInteractorAttachPoint.transform.SetParent(this.objectInteractor.transform);
                this.objectInteractorAttachPoint.transform.localPosition = Vector3.zero;
                this.objectInteractorAttachPoint.layer = LayerMask.NameToLayer("Ignore Raycast");
                Rigidbody rigidbody = this.objectInteractorAttachPoint.AddComponent <Rigidbody>();
                rigidbody.isKinematic            = true;
                rigidbody.freezeRotation         = true;
                rigidbody.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
                VRTK_PlayerObject.SetPlayerObject(this.objectInteractorAttachPoint, VRTK_PlayerObject.ObjectTypes.Pointer);
            }
            this.ScaleObjectInteractor(Vector3.one);
            this.objectInteractor.SetActive(false);
        }
        protected virtual void CreateTracer()
        {
            if (customTracer)
            {
                actualTracer = Instantiate(customTracer);
            }
            else
            {
                actualTracer = GameObject.CreatePrimitive(PrimitiveType.Cube);
                actualTracer.GetComponent <BoxCollider>().isTrigger = true;
                actualTracer.AddComponent <Rigidbody>().isKinematic = true;
                actualTracer.layer = LayerMask.NameToLayer("Ignore Raycast");

                SetupMaterialRenderer(actualTracer);
            }

            actualTracer.transform.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, gameObject.name, "StraightPointerRenderer_Tracer");
            actualTracer.transform.SetParent(actualContainer.transform);

            VRTK_PlayerObject.SetPlayerObject(actualTracer, VRTK_PlayerObject.ObjectTypes.Pointer);
        }
示例#30
0
        // Token: 0x0600193A RID: 6458 RVA: 0x00086B18 File Offset: 0x00084D18
        protected virtual void DrawPlayAreaCursorBoundary(int index, float left, float right, float top, float bottom, float thickness, Vector3 localPosition)
        {
            GameObject gameObject = GameObject.CreatePrimitive(PrimitiveType.Cube);

            gameObject.name = VRTK_SharedMethods.GenerateVRTKObjectName(true, new object[]
            {
                base.gameObject.name,
                "PlayAreaCursorBoundary",
                index
            });
            VRTK_PlayerObject.SetPlayerObject(gameObject, VRTK_PlayerObject.ObjectTypes.Pointer);
            float x = (right - left) / 1.065f;
            float z = (top - bottom) / 1.08f;

            gameObject.transform.localScale = new Vector3(x, thickness, z);
            Object.Destroy(gameObject.GetComponent <BoxCollider>());
            gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");
            gameObject.transform.SetParent(this.playAreaCursor.transform);
            gameObject.transform.localPosition   = localPosition;
            this.playAreaCursorBoundaries[index] = gameObject;
        }