You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
//========= Copyright 2016-2018, HTC Corporation. All rights reserved. =========== |
|
|
|
using HTC.UnityPlugin.VRModuleManagement; |
|
using System; |
|
using UnityEngine; |
|
using UnityEngine.EventSystems; |
|
using UnityEngine.UI; |
|
|
|
namespace HTC.UnityPlugin.Vive.BindingInterface |
|
{ |
|
public class BindingInterfaceDeviceItem : MonoBehaviour |
|
, IPointerEnterHandler |
|
, IPointerExitHandler |
|
{ |
|
[SerializeField] |
|
private Image m_imageModel; |
|
[SerializeField] |
|
private Button m_button; |
|
|
|
public RectTransform rectTransform { get { return m_imageModel.rectTransform; } } |
|
|
|
public bool isDisplayed { get { return m_imageModel.enabled; } } |
|
|
|
public bool isBound { get; set; } |
|
|
|
public uint deviceIndex { get; set; } |
|
|
|
public event Action<string> onClick; |
|
public event Action<uint> onEnter; |
|
public event Action<uint> onExit; |
|
|
|
public void OnPointerEnter(PointerEventData eventData) |
|
{ |
|
if (onEnter != null) { onEnter(deviceIndex); } |
|
} |
|
|
|
public void OnPointerExit(PointerEventData eventData) |
|
{ |
|
if (onEnter != null) { onExit(deviceIndex); } |
|
} |
|
|
|
public void OnClick() |
|
{ |
|
if (onClick != null) { onClick(VRModule.GetCurrentDeviceState(deviceIndex).serialNumber); } |
|
} |
|
|
|
public void UpdateModel() |
|
{ |
|
BindingInterfaceSpriteManager.SetupTrackingDeviceIcon(m_imageModel, VRModule.GetCurrentDeviceState(deviceIndex).deviceModel, isBound); |
|
} |
|
|
|
public void UpdatePosition() |
|
{ |
|
var deviceState = VRModule.GetCurrentDeviceState(deviceIndex); |
|
var devicePose = deviceState.pose; |
|
|
|
transform.localPosition = new Vector3(devicePose.pos.x, devicePose.pos.z, 0f) * 100f; |
|
transform.localRotation = Quaternion.Euler(0f, 0f, -devicePose.rot.eulerAngles.y); |
|
} |
|
} |
|
} |