Alright!
So the newest Unity package is missing the OVRVolumeControl.
Here is a version that "works" with the current package. It won't show the volume bar if you're already at max/min values, because the event that the button was hit appears to be missing so you can't key off it here.
I added the LastVolumeInput, TempVolumeInput and TimeToCheck values so it tracks when the volume has changed. There was some minor changes made to the Update function as well.
Add this behavior to the prefab with the missing script.
Add that prefab to your camera.
Position it where you want it to appear in the users vision.
Blamo - it'll work.
Cheers!
using UnityEngine;
using System.Collections;
public class OVRVolumeControl : MonoBehaviour
{ private const float showPopupTime = 3;
private const float popupOffsetY = 64.0f / 500.0f;
private const float popupDepth = 1.8f;
private const int maxVolume = 15;
private const int numVolumeImages = maxVolume + 1;
private Transform myTransform = null;
private float LastVolumeInput;
private float TempVolumeInput;
private float TimeToCheck = 0.0f;
void Start()
{ DontDestroyOnLoad( gameObject );
myTransform = transform;
GetComponent<Renderer>().enabled = false;
LastVolumeInput = OVRManager.volumeLevel;
}
void Update()
{ UpdatePosition(Camera.main.transform);
}
/// <summary>
/// Updates the position of the volume popup.
/// </summary>
public void UpdatePosition(Transform cameraTransform)
{ // OVRManager.volumeLevel returns a negative value in GearVR/Unity until the button is hit at least once.
float check = OVRManager.volumeLevel;
if ((check < 0f) || (check == LastVolumeInput)) // we haven't gotten a volume button check yet.
{ TimeToCheck = 0f;
}
else
{ LastVolumeInput = -10; // there was a change, let this play out.
if (TempVolumeInput != check)
TimeToCheck = 0.0f;
TempVolumeInput = check;
// Volume has changed...
TimeToCheck += Time.deltaTime;
if ((TimeToCheck < showPopupTime)) // for the next three seconds ....
{ GetComponent<Renderer>().enabled = true;
GetComponent<Renderer>().material.mainTextureOffset = new Vector2(0.0f, (float)(maxVolume - (OVRManager.volumeLevel*maxVolume) ) / (float)numVolumeImages);
if (myTransform != null && cameraTransform != null)
{ // place in front of camera
myTransform.rotation = cameraTransform.rotation;
myTransform.position = cameraTransform.position + (myTransform.forward * popupDepth) + (myTransform.up * popupOffsetY);
}
}
else
{ // 3 seconds have passed...
TimeToCheck = 0.0f;
LastVolumeInput = check;
GetComponent<Renderer>().enabled = false;
}
}
}
}