Files
2026-02-21 16:45:37 +08:00

85 lines
2.1 KiB
C#

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace Oculus.Platform.Samples.VrBoardGame
{
public class EyeCamera : MonoBehaviour
{
[SerializeField]
private EventSystem m_eventSystem;
[SerializeField]
private GameController m_gameController;
[SerializeField]
private SphereCollider m_gazeTracker;
private Button m_currentButton;
private GamePiece m_currentPiece;
private BoardPosition m_boardPosition;
private void Update()
{
Button button = null;
GamePiece gamePiece = null;
BoardPosition boardPosition = null;
RaycastHit hitInfo;
if (Physics.Raycast(base.transform.position, base.transform.forward, out hitInfo, 50f))
{
button = hitInfo.collider.GetComponent<Button>();
gamePiece = hitInfo.collider.GetComponent<GamePiece>();
boardPosition = hitInfo.collider.GetComponent<BoardPosition>();
}
if (m_currentButton != button)
{
if (m_eventSystem != null)
{
m_eventSystem.SetSelectedGameObject(null);
}
m_currentButton = button;
if (m_currentButton != null)
{
m_currentButton.Select();
}
}
if (m_currentPiece != gamePiece)
{
if (m_currentPiece != null)
{
m_gameController.StoppedLookingAtPiece();
}
m_currentPiece = gamePiece;
if (m_currentPiece != null)
{
m_gameController.StartedLookingAtPiece(m_currentPiece);
}
}
if (m_boardPosition != boardPosition)
{
m_boardPosition = boardPosition;
if (m_boardPosition != null)
{
m_gameController.StartedLookingAtPosition(m_boardPosition);
}
}
if (hitInfo.collider == m_gazeTracker)
{
m_gameController.ClearProposedMove();
}
if (Input.GetButton("Fire2"))
{
float axis = Input.GetAxis("Mouse Y");
float axis2 = Input.GetAxis("Mouse X");
base.transform.rotation *= Quaternion.AngleAxis(axis2, Vector3.up);
base.transform.rotation *= Quaternion.AngleAxis(0f - axis, Vector3.right);
Vector3 eulerAngles = base.transform.eulerAngles;
eulerAngles.z = 0f;
base.transform.eulerAngles = eulerAngles;
}
}
}
}