// Use this for initialization void Start() { controlRotation = 0; device = SteamVR_Controller.Input((int)trackedObj.index); jogShuttle = JogShuttle.play; PlayAnimationFromPosition(0f, 0f); }
// 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; } }