Exemple #1
0
        void UpdateLaser()
        {
            Laser.SetPosition(0, Laser.transform.position);
            Laser.SetPosition(1, Laser.transform.position + Laser.transform.forward);

            if (_Target && _Target.gameObject.activeInHierarchy)
            {
                RaycastHit hit;
                if (IsWithinRange(_Target) && Raycast(_Target, out hit))
                {
                    Laser.SetPosition(1, hit.point);
                    if (!IsOtherWorkingOn(_Target))
                    {
                        var newPos = new Vector2(hit.textureCoord.x * VRGUI.Width, (1 - hit.textureCoord.y) * VRGUI.Height);
                        //VRLog.Info("New Pos: {0}, textureCoord: {1}", newPos, hit.textureCoord);
                        if (!mouseDownPosition.HasValue || Vector2.Distance(mouseDownPosition.Value, newPos) > MOUSE_STABILIZER_THRESHOLD)
                        {
                            if (!Screen.fullScreen)
                            {
                                MouseOperations.SetClientCursorPosition((int)newPos.x, (int)newPos.y);
                            }
                            else
                            {
                                MouseOperations.SetClientCursorPositionFullscreen((int)newPos.x, (int)newPos.y);
                            }
                            mouseDownPosition = null;
                        }
                    }
                }
                else
                {
                    // Out of view
                    LaserVisible = false;
                }
            }
            else
            {
                // May day, may day -- window is gone!
                LaserVisible = false;
            }
        }