Initial checkin
Initial checkin of Quest App Launcher
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
/************************************************************************************
|
||||
Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved.
|
||||
|
||||
Licensed under the Oculus Utilities SDK License Version 1.31 (the "License"); you may not use
|
||||
the Utilities SDK except in compliance with the License, which is provided at the time of installation
|
||||
or download, or which otherwise accompanies this software in either electronic or hard copy form.
|
||||
|
||||
You may obtain a copy of the License at
|
||||
https://developer.oculus.com/licenses/utilities-1.31
|
||||
|
||||
Unless required by applicable law or agreed to in writing, the Utilities SDK distributed
|
||||
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
||||
ANY KIND, either express or implied. See the License for the specific language governing
|
||||
permissions and limitations under the License.
|
||||
************************************************************************************/
|
||||
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
/// <summary>
|
||||
/// This is a simple behavior that can be attached to a parent of the CameraRig in order
|
||||
/// to provide movement via the gamepad. This is useful when testing an application in
|
||||
/// the Unity editor without the HMD.
|
||||
/// To use it, create a game object in your scene and drag your CameraRig to be a child
|
||||
/// of the game object. Then, add the OVRDebugHeadController behavior to the game object.
|
||||
/// Alternatively, this behavior can be placed directly on the OVRCameraRig object, but
|
||||
/// that is not guaranteed to work if OVRCameraRig functionality changes in the future.
|
||||
/// In the parent case, the object with OVRDebugHeadController can be thougt of as a
|
||||
/// platform that your camera is attached to. When the platform moves or rotates, the
|
||||
/// camera moves or rotates, but the camera can still move independently while "on" the
|
||||
/// platform.
|
||||
/// In general, this behavior should be disabled when not debugging.
|
||||
/// </summary>
|
||||
public class OVRDebugHeadController : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
public bool AllowPitchLook = false;
|
||||
[SerializeField]
|
||||
public bool AllowYawLook = true;
|
||||
[SerializeField]
|
||||
public bool InvertPitch = false;
|
||||
[SerializeField]
|
||||
public float GamePad_PitchDegreesPerSec = 90.0f;
|
||||
[SerializeField]
|
||||
public float GamePad_YawDegreesPerSec = 90.0f;
|
||||
[SerializeField]
|
||||
public bool AllowMovement = false;
|
||||
[SerializeField]
|
||||
public float ForwardSpeed = 2.0f;
|
||||
[SerializeField]
|
||||
public float StrafeSpeed = 2.0f;
|
||||
|
||||
protected OVRCameraRig CameraRig = null;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
// locate the camera rig so we can use it to get the current camera transform each frame
|
||||
OVRCameraRig[] CameraRigs = gameObject.GetComponentsInChildren<OVRCameraRig>();
|
||||
|
||||
if( CameraRigs.Length == 0 )
|
||||
Debug.LogWarning("OVRCamParent: No OVRCameraRig attached.");
|
||||
else if (CameraRigs.Length > 1)
|
||||
Debug.LogWarning("OVRCamParent: More then 1 OVRCameraRig attached.");
|
||||
else
|
||||
CameraRig = CameraRigs[0];
|
||||
}
|
||||
|
||||
// Use this for initialization
|
||||
void Start ()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update ()
|
||||
{
|
||||
if ( AllowMovement )
|
||||
{
|
||||
float gamePad_FwdAxis = OVRInput.Get(OVRInput.RawAxis2D.LThumbstick).y;
|
||||
float gamePad_StrafeAxis = OVRInput.Get(OVRInput.RawAxis2D.LThumbstick).x;
|
||||
|
||||
Vector3 fwdMove = ( CameraRig.centerEyeAnchor.rotation * Vector3.forward ) * gamePad_FwdAxis * Time.deltaTime * ForwardSpeed;
|
||||
Vector3 strafeMove = ( CameraRig.centerEyeAnchor.rotation * Vector3.right ) * gamePad_StrafeAxis * Time.deltaTime * StrafeSpeed;
|
||||
transform.position += fwdMove + strafeMove;
|
||||
}
|
||||
|
||||
#if UNITY_2017_2_OR_NEWER
|
||||
if ( !UnityEngine.XR.XRDevice.isPresent && ( AllowYawLook || AllowPitchLook ) )
|
||||
#else
|
||||
if ( !UnityEngine.VR.VRDevice.isPresent && ( AllowYawLook || AllowPitchLook ) )
|
||||
#endif
|
||||
{
|
||||
Quaternion r = transform.rotation;
|
||||
if ( AllowYawLook )
|
||||
{
|
||||
float gamePadYaw = OVRInput.Get(OVRInput.RawAxis2D.RThumbstick).x;
|
||||
float yawAmount = gamePadYaw * Time.deltaTime * GamePad_YawDegreesPerSec;
|
||||
Quaternion yawRot = Quaternion.AngleAxis( yawAmount, Vector3.up );
|
||||
r = yawRot * r;
|
||||
}
|
||||
if ( AllowPitchLook )
|
||||
{
|
||||
float gamePadPitch = OVRInput.Get(OVRInput.RawAxis2D.RThumbstick).y;
|
||||
if ( Mathf.Abs( gamePadPitch ) > 0.0001f )
|
||||
{
|
||||
if ( InvertPitch )
|
||||
{
|
||||
gamePadPitch *= -1.0f;
|
||||
}
|
||||
float pitchAmount = gamePadPitch * Time.deltaTime * GamePad_PitchDegreesPerSec;
|
||||
Quaternion pitchRot = Quaternion.AngleAxis( pitchAmount, Vector3.left );
|
||||
r = r * pitchRot;
|
||||
}
|
||||
}
|
||||
|
||||
transform.rotation = r;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user