// Update is called once per frame void Update() { findPlaneClosestTo3DCursor(); // the interaction cursor is positioned where the cursor is //interactionCursor.transform.position = calcInteractionCursorPosition (); // debugging purposes if (debugMode) { DrawDebug(); } DrawCursor(StripWidth); // change the orientation of the strip on the basis of the joystick press right if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickRight, _dominantHand)) { CursorOrientationFactor += 0.02f; //StrokeOrientation = Vector3.RotateTowards (StrokeOrientation, OVRInput.GetLocalControllerRotation (OVRInput.Controller.RTouch) * Vector3.right, 0.05f, 0.0f); } else if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickLeft, _dominantHand)) { CursorOrientationFactor -= 0.02f; //StrokeOrientation = Vector3.RotateTowards (StrokeOrientation, OVRInput.GetLocalControllerRotation (OVRInput.Controller.RTouch) * Vector3.up, 0.05f, 0.0f); } /* * // change the transparency of the avatar if the controller button 'A' is pressed. This was done so that I could see the 3D strokes that I have made more clearly * if (OVRInput.Get (OVRInput.Button.Two, OVRInput.Controller.RTouch)) { * _baseMeshRenderer.material.color = new Color(_baseMeshRenderer.material.color.r, _baseMeshRenderer.material.color.g, _baseMeshRenderer.material.color.b, 0.0f); * //baseMesh.SetActive (false); * } else { * //baseMesh.SetActive (true); * _baseMeshRenderer.material.color = new Color(_baseMeshRenderer.material.color.r, _baseMeshRenderer.material.color.g, _baseMeshRenderer.material.color.b, 1.0f); * } */ // Lets try giving the user a control on determining the distance of the 3D cursor from the controller. "A" button brings the cursor closer and "B" button pushes it away if (OVRInput.Get(OVRInput.Button.Two, _dominantHand)) { _cursorDistance += _cursorDistanceSpeed; } if (OVRInput.Get(OVRInput.Button.One, _dominantHand)) { _cursorDistance -= _cursorDistanceSpeed; } // Change the width of the strip on the basis of the joystick press down if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickUp, _dominantHand)) { StripWidth += stripWidthChangeFactor; } else if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickDown, _dominantHand)) { StripWidth -= stripWidthChangeFactor; } // Start and stop the strip drawing process // create the strip gameobject and setup initial parameters if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger, _dominantHand)) { GameObject go = createStrokeGameObject(); _currLine = go.AddComponent <MeshLineRenderer> (); _currLine.SetMaterial(new Material(strokeMat)); _currLine.setWidth(StripWidth); _currLine.SetOrientation(calcCursorOrientation()); //currLine.endWidth = 0.1f; numClicks = 0; _prevPoint = calcCursorPosition(); ModeDetermine = "drawing"; } // add strips to the existing stroke that you are drawing else if (OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger, _dominantHand)) { //currLine.positionCount = numClicks + 1; //currLine.SetPosition (numClicks, OVRInput.GetLocalControllerPosition (OVRInput.Controller.RTouch)); _currLine.setWidth(StripWidth); _currPoint = calcCursorPosition(); cleanPoint(_currLine, _currPoint); _currLine.SetOrientation(calcCursorOrientation()); _prevPoint = _currPoint; numClicks++; } // when you stop drawing change the mode to idle so that you can respond to ui changes again else if (OVRInput.GetUp(OVRInput.Button.PrimaryIndexTrigger, _dominantHand)) { ModeDetermine = "idle"; } /* * if (CollisionDetector.CollidingBodyPart != null) { * Debug.Log (CollisionDetector.CollidingBodyPart.transform.name); * }*/ // event system for detecting the frame where gripDown happens if (OVRInput.Get(OVRInput.Axis1D.PrimaryHandTrigger, _dominantHand) > 0.9f) { if (_gripDownCount == 0) { _gripDownCount = 1; _gripDown = true; } else { _gripDown = false; } } else { if (_gripDownCount == 1) { _gripDownCount = 0; } } // assigning the origin of the drawing surface as this origin's x,y has to be defined in order to use the magnified surface. if (_gripDown) { if (_originCursorPosition == new Vector3()) { _originCursorPosition = calcCursorPosition(); _originCursorRotation = OVRInput.GetLocalControllerRotation(_dominantHand); Vector3 scale = new Vector3(0.02f, 0.02f, 0.02f); GenerateGrid(_originCursorPosition, _originCursorRotation, scale); } else { _originCursorPosition = new Vector3(); _originCursorRotation = new Quaternion(); _grid.SetActive(false); } } }