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

172 lines
3.7 KiB
C#

using UnityEngine;
public class VRController : MonoBehaviour
{
public GameObject modelParent;
public GameObject infoParent;
public GameObject gameplayTransformsParent;
[Header("Buttons")]
public VRControllerButton startButton;
public VRControllerButton oneButton;
public VRControllerButton twoButton;
public VRControllerButton thumbstickButton;
public VRControllerButton indexTrigger;
public VRControllerButton handTrigger;
public VRControllerButton upButton;
public VRControllerButton downButton;
public VRControllerButton leftButton;
public VRControllerButton rightButton;
public bool isTouchController;
[Header("Gameplay transforms")]
public Transform pointerTeleportTransform;
public Transform pointerUITransform;
public Transform throwObjectTransform;
public Transform reelCatchTransform;
public Transform flyHandTransform;
public Transform rodHoldTransform;
public Transform fishingNetHoldTransform;
public Transform boatWheelTransform;
public Transform drillerHoldTransform;
public Transform drillerRotateTransform;
private void Start()
{
}
public void UpdateInfo(OVRInput.Button button, string infoText)
{
VRControllerButton vRControllerButton = FindButton(button);
if (vRControllerButton == null)
{
Debug.LogError("VRController button not found: " + button);
return;
}
if (infoText == string.Empty)
{
vRControllerButton.gameObject.SetActive(false);
return;
}
if (isTouchController)
{
switch (button)
{
case OVRInput.Button.Up:
infoText = "(" + Utilities.GetTranslation("HUD_CONTROLS/UP") + ") " + infoText;
break;
case OVRInput.Button.Down:
infoText = "(" + Utilities.GetTranslation("HUD_CONTROLS/DOWN") + ") " + infoText;
break;
case OVRInput.Button.Left:
infoText = "(" + Utilities.GetTranslation("HUD_CONTROLS/LEFT") + ") " + infoText;
break;
case OVRInput.Button.Right:
infoText = "(" + Utilities.GetTranslation("HUD_CONTROLS/RIGHT") + ") " + infoText;
break;
}
}
vRControllerButton.UpdateInfoText(infoText);
}
public VRControllerButton FindButton(OVRInput.Button button)
{
switch (button)
{
case OVRInput.Button.Start:
return startButton;
case OVRInput.Button.One:
return oneButton;
case OVRInput.Button.Two:
return twoButton;
case OVRInput.Button.PrimaryThumbstick:
return thumbstickButton;
case OVRInput.Button.SecondaryThumbstick:
return thumbstickButton;
case OVRInput.Button.PrimaryIndexTrigger:
return indexTrigger;
case OVRInput.Button.SecondaryIndexTrigger:
return indexTrigger;
case OVRInput.Button.PrimaryHandTrigger:
return handTrigger;
case OVRInput.Button.SecondaryHandTrigger:
return handTrigger;
case OVRInput.Button.Up:
return upButton;
case OVRInput.Button.Down:
return downButton;
case OVRInput.Button.Left:
return leftButton;
case OVRInput.Button.Right:
return rightButton;
default:
return null;
}
}
public void HideAllInfo()
{
if ((bool)startButton)
{
startButton.gameObject.SetActive(false);
}
if ((bool)oneButton)
{
oneButton.gameObject.SetActive(false);
}
if ((bool)twoButton)
{
twoButton.gameObject.SetActive(false);
}
if ((bool)thumbstickButton)
{
thumbstickButton.gameObject.SetActive(false);
}
if ((bool)indexTrigger)
{
indexTrigger.gameObject.SetActive(false);
}
if ((bool)handTrigger)
{
handTrigger.gameObject.SetActive(false);
}
if ((bool)upButton)
{
upButton.gameObject.SetActive(false);
}
if ((bool)downButton)
{
downButton.gameObject.SetActive(false);
}
if ((bool)leftButton)
{
leftButton.gameObject.SetActive(false);
}
if ((bool)rightButton)
{
rightButton.gameObject.SetActive(false);
}
}
}