/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* Licensed under the Oculus SDK License Agreement (the "License");
* you may not use the Oculus 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/oculussdk/
*
* Unless required by applicable law or agreed to in writing, the Oculus 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;
///
/// Logs when the application enters power save mode and allows you to a low-power CPU/GPU level with a button press.
///
public class OVRModeParms : MonoBehaviour
{
#region Member Variables
///
/// The gamepad button that will switch the application to CPU level 0 and GPU level 1.
///
public OVRInput.RawButton resetButton = OVRInput.RawButton.X;
#endregion
///
/// Invoke power state mode test.
///
void Start()
{
if (!OVRManager.isHmdPresent)
{
enabled = false;
return;
}
// Call TestPowerLevelState after 10 seconds
// and repeats every 10 seconds.
InvokeRepeating ( "TestPowerStateMode", 10, 10.0f );
}
///
/// Change default vr mode parms dynamically.
///
void Update()
{
// NOTE: some of the buttons defined in OVRInput.RawButton are not available on the Android game pad controller
if ( OVRInput.GetDown(resetButton))
{
//*************************
// Dynamically change VrModeParms cpu and gpu level.
// NOTE: Reset will cause 1 frame of flicker as it leaves
// and re-enters Vr mode.
//*************************
OVRPlugin.suggestedCpuPerfLevel = OVRPlugin.ProcessorPerformanceLevel.PowerSavings;
OVRPlugin.suggestedGpuPerfLevel = OVRPlugin.ProcessorPerformanceLevel.SustainedLow;
}
}
///
/// Check current power state mode.
///
void TestPowerStateMode()
{
//*************************
// Check power-level state mode
//*************************
if (OVRPlugin.powerSaving)
{
// The device has been throttled
Debug.Log("POWER SAVE MODE ACTIVATED");
}
}
}