Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/GuardianBoundaryEnforcer.cs
2026-02-21 16:45:37 +08:00

60 lines
1.2 KiB
C#

using System;
using UnityEngine;
public class GuardianBoundaryEnforcer : MonoBehaviour
{
public bool m_AllowRecenter = true;
public OVRCameraRig m_mainCamera;
private Quaternion m_originalTrackerOrientation;
private int m_framecount;
private Quaternion m_orientToOriginalForward;
public Quaternion OrientToOriginalForward
{
get
{
return m_orientToOriginalForward;
}
}
public event Action TrackingChanged;
private void Start()
{
OVRManager.display.RecenteredPose += Recentered;
m_originalTrackerOrientation = OVRPlugin.GetNodePose(OVRPlugin.Node.TrackerZero, OVRPlugin.Step.Render).ToOVRPose().orientation;
}
private void Update()
{
if (m_framecount < 0)
{
return;
}
m_framecount++;
if (m_framecount > 2)
{
float num = OVRPlugin.GetNodePose(OVRPlugin.Node.TrackerZero, OVRPlugin.Step.Render).ToOVRPose().orientation.eulerAngles.y - m_originalTrackerOrientation.eulerAngles.y;
m_orientToOriginalForward = Quaternion.Euler(0f, 0f - num, 0f);
if (!m_AllowRecenter)
{
m_mainCamera.trackingSpace.transform.rotation = m_orientToOriginalForward;
}
m_framecount = -1;
if (this.TrackingChanged != null)
{
this.TrackingChanged();
}
}
}
private void Recentered()
{
m_framecount = 0;
}
}