Example #1
0
 // Use this for initialization
 void Start()
 {
     controlRotation = 0;
     device          = SteamVR_Controller.Input((int)trackedObj.index);
     jogShuttle      = JogShuttle.play;
     PlayAnimationFromPosition(0f, 0f);
 }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        if (trackedObj != null && anim != null)
        {
            // Check / Change If Jog Or Shuttle Mode With Touch Button
            if (device.GetPressUp(Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad))
            {
                if (jogShuttle == JogShuttle.jog)
                {
                    jogShuttle = JogShuttle.shuttle;
                }
                else if (jogShuttle == JogShuttle.shuttle)
                {
                    jogShuttle = JogShuttle.play;
                }
                else if (jogShuttle == JogShuttle.play)
                {
                    jogShuttle = JogShuttle.jog;
                }

                Debug.Log("Mode is : " + jogShuttle.ToString());
            }


            // Touch down, possible chance for a beginning position
            if ((int)trackedObj.index != -1 && device.GetTouchDown(Valve.VR.EVRButtonId.k_EButton_Axis0))
            {
                updatePosition = true;
                // Record start position
                mStartPosition = new Vector2(device.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0).x,
                                             device.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0).y);
            }
            // Touch up , possible chance for a new position
            else if (device.GetTouchUp(Valve.VR.EVRButtonId.k_EButton_Axis0))
            {
                updatePosition = false;
                updatePosition = true;
                //Debug.Log("Tracking Finished");
            }

            else if (updatePosition)
            {
                mEndPosition = new Vector2(device.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0).x,
                                           device.GetAxis(Valve.VR.EVRButtonId.k_EButton_Axis0).y);

                //if (mEndPosition != new Vector2(0f, 0f))
                controlRotation = GetAngleDegree(Vector2.zero, mEndPosition);

                float delta = 0;
                switch (jogShuttle)
                {
                case JogShuttle.jog:
                    //ChangeAnimationPosition(playbackPosition + ((controlRotation / 360) * frameAdvancePerTurn));
                    //Debug.Log("Changed Position to : " + (playbackPosition + (controlRotation * 360 / frameAdvancePerTurn)).ToString());

                    if (controlRotation != 0)
                    {
                        Debug.Log("Control Rotation is : " + old_controlRotation.ToString());
                        delta = ((controlRotation - old_controlRotation) % 360) * ((frameAdvancePerTurn / 360) * 30);
                    }
                    else
                    {
                        delta = 0;
                    }

                    ChangeAnimationPosition(delta + playbackPosition);
                    old_controlRotation = controlRotation;

                    Debug.Log(delta.ToString());
                    break;

                case JogShuttle.shuttle:
                    if (controlRotation > 240f && controlRotation < 360f)
                    {
                        delta = Mathf.DeltaAngle(0f, controlRotation);
                    }
                    if (controlRotation > 0f && controlRotation < 90f)
                    {
                        delta = Mathf.DeltaAngle(0f, controlRotation);
                    }
                    ChangeAnimationPlaybackSpeed((delta / 90) * maxPlaybackSpeed);
                    Debug.Log("Changed Playback Speed to : " + ((delta / 90) * maxPlaybackSpeed).ToString());
                    break;

                case JogShuttle.play:
                    if (mEndPosition.x != 0f)
                    {
                        Debug.Log("PlaybackPosition entered : " + playbackPosition.ToString());
                        PlayAnimationFromPosition(playbackPosition, mEndPosition.x);
                        Debug.Log("Position.x : " + mEndPosition.x.ToString());
                    }
                    break;

                default:
                    Debug.LogError("Could not find " + jogShuttle + " in options for JogShuttleSwitch ");
                    break;
                }
                //updatePosition = false;
            }
            playbackPosition = anim["Take 001"].time;
        }
        else
        {
            return;
        }
    }