version 2.5.0
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
// Copyright HTC Corporation All Rights Reserved.
|
||||
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
namespace VIVE.OpenXR.Models
|
||||
{
|
||||
public class ControllerModelActions : MonoBehaviour
|
||||
{
|
||||
#region Log
|
||||
const string LOG_TAG = "VIVE.OpenXR.Models.ControllerModelActions";
|
||||
StringBuilder m_sb = null;
|
||||
StringBuilder sb {
|
||||
get {
|
||||
if (m_sb == null) { m_sb = new StringBuilder(); }
|
||||
return m_sb;
|
||||
}
|
||||
}
|
||||
void DEBUG(StringBuilder msg) { Debug.LogFormat("{0} {1}", LOG_TAG, msg); }
|
||||
void ERROR(StringBuilder msg) { Debug.LogErrorFormat("{0} {1}", LOG_TAG, msg); }
|
||||
#endregion
|
||||
|
||||
#region Inspector
|
||||
public bool isLeft = false;
|
||||
public GameObject triggerButton = null;
|
||||
public GameObject gripButton = null;
|
||||
public GameObject thumbstickButton = null;
|
||||
public GameObject primaryButton = null;
|
||||
public GameObject secondaryButton = null;
|
||||
|
||||
public InputAction trigger = null;
|
||||
public InputAction grip = null;
|
||||
public InputAction thumbstick = null;
|
||||
public InputAction primaryClick = null;
|
||||
public InputAction secondaryClick = null;
|
||||
#endregion
|
||||
|
||||
private Quaternion triggerRot = Quaternion.identity;
|
||||
private Vector3 gripButtonPos = Vector3.zero;
|
||||
private Vector3 primaryButtonPos = Vector3.zero;
|
||||
private Vector3 secondaryButtonPos = Vector3.zero;
|
||||
|
||||
void Start()
|
||||
{
|
||||
if (triggerButton != null) { triggerRot = triggerButton.transform.localRotation; }
|
||||
if (gripButton != null) { gripButtonPos = gripButton.transform.localPosition; }
|
||||
if (primaryButton != null) { primaryButtonPos = primaryButton.transform.localPosition; }
|
||||
if (secondaryButton != null) { secondaryButtonPos = secondaryButton.transform.localPosition; }
|
||||
|
||||
if (trigger != null) { trigger.Enable(); }
|
||||
if (grip != null) { grip.Enable(); }
|
||||
if (thumbstick != null) { thumbstick.Enable(); }
|
||||
if (primaryClick != null) { primaryClick.Enable(); }
|
||||
if (secondaryClick != null) { secondaryClick.Enable(); }
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
OnTrigger();
|
||||
OnGrip();
|
||||
OnThumbstick();
|
||||
OnPrimaryClick();
|
||||
OnSecondaryClick();
|
||||
}
|
||||
|
||||
void OnTrigger()
|
||||
{
|
||||
if (OpenXRHelper.GetAnalog(trigger, out float value, out string msg))
|
||||
{
|
||||
triggerButton.transform.localRotation = Quaternion.Euler(value * 15f, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
triggerButton.transform.localRotation = triggerRot;
|
||||
}
|
||||
}
|
||||
void OnGrip()
|
||||
{
|
||||
if (OpenXRHelper.GetAnalog(grip, out float value, out string msg))
|
||||
{
|
||||
if (isLeft)
|
||||
gripButton.transform.localPosition = gripButtonPos + Vector3.right * value * -0.002f;
|
||||
else
|
||||
gripButton.transform.localPosition = gripButtonPos + Vector3.left * value * -0.002f;
|
||||
}
|
||||
}
|
||||
void OnThumbstick()
|
||||
{
|
||||
if (OpenXRHelper.GetVector2(thumbstick, out Vector2 value, out string msg))
|
||||
{
|
||||
thumbstickButton.transform.localRotation = Quaternion.Euler(value.y * 25f, 0, value.x * -25f);
|
||||
}
|
||||
}
|
||||
void OnPrimaryClick()
|
||||
{
|
||||
if (OpenXRHelper.GetAnalog(primaryClick, out float value, out string msg))
|
||||
{
|
||||
primaryButton.transform.localPosition = primaryButtonPos + Vector3.down * (value > 0.5f ? 0.00125f : 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
primaryButton.transform.localPosition = primaryButtonPos;
|
||||
}
|
||||
}
|
||||
void OnSecondaryClick()
|
||||
{
|
||||
if (OpenXRHelper.GetAnalog(secondaryClick, out float value, out string msg))
|
||||
{
|
||||
secondaryButton.transform.localPosition = secondaryButtonPos + Vector3.down * (value > 0.5f ? 0.00125f : 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
secondaryButton.transform.localPosition = secondaryButtonPos;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user