85 lines
2.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|