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.
70 lines
3.4 KiB
70 lines
3.4 KiB
3 years ago
|
//========= Copyright 2016-2018, HTC Corporation. All rights reserved. ===========
|
||
|
|
||
|
using HTC.UnityPlugin.Utility;
|
||
|
using System;
|
||
|
using UnityEngine.Events;
|
||
|
|
||
|
namespace HTC.UnityPlugin.VRModuleManagement
|
||
|
{
|
||
|
public partial class VRModule : SingletonBehaviour<VRModule>
|
||
|
{
|
||
|
[Serializable]
|
||
|
public class NewPosesEvent : UnityEvent { }
|
||
|
[Serializable]
|
||
|
public class ControllerRoleChangedEvent : UnityEvent { }
|
||
|
[Serializable]
|
||
|
public class InputFocusEvent : UnityEvent<bool> { }
|
||
|
[Serializable]
|
||
|
public class DeviceConnectedEvent : UnityEvent<uint, bool> { }
|
||
|
[Serializable]
|
||
|
public class ActiveModuleChangedEvent : UnityEvent<VRModuleActiveEnum> { }
|
||
|
|
||
|
public delegate void NewPosesListener();
|
||
|
public delegate void ControllerRoleChangedListener();
|
||
|
public delegate void InputFocusListener(bool value);
|
||
|
public delegate void DeviceConnectedListener(uint deviceIndex, bool connected);
|
||
|
public delegate void ActiveModuleChangedListener(VRModuleActiveEnum activeModule);
|
||
|
|
||
|
private static NewPosesListener s_onNewPoses;
|
||
|
private static ControllerRoleChangedListener s_onControllerRoleChanged;
|
||
|
private static InputFocusListener s_onInputFocus;
|
||
|
private static DeviceConnectedListener s_onDeviceConnected;
|
||
|
private static ActiveModuleChangedListener s_onActiveModuleChanged;
|
||
|
|
||
|
public static event NewPosesListener onNewPoses { add { s_onNewPoses += value; } remove { s_onNewPoses -= value; } } // invoke by manager
|
||
|
public static event ControllerRoleChangedListener onControllerRoleChanged { add { s_onControllerRoleChanged += value; } remove { s_onControllerRoleChanged -= value; } } // invoke by module
|
||
|
public static event InputFocusListener onInputFocus { add { s_onInputFocus += value; } remove { s_onInputFocus -= value; } } // invoke by module
|
||
|
public static event DeviceConnectedListener onDeviceConnected { add { s_onDeviceConnected += value; } remove { s_onDeviceConnected -= value; } }// invoke by manager
|
||
|
public static event ActiveModuleChangedListener onActiveModuleChanged { add { s_onActiveModuleChanged += value; } remove { s_onActiveModuleChanged -= value; } } // invoke by manager
|
||
|
|
||
|
private static void InvokeNewPosesEvent()
|
||
|
{
|
||
|
if (s_onNewPoses != null) { s_onNewPoses(); }
|
||
|
if (Active) { Instance.m_onNewPoses.Invoke(); }
|
||
|
}
|
||
|
|
||
|
private static void InvokeControllerRoleChangedEvent()
|
||
|
{
|
||
|
if (s_onControllerRoleChanged != null) { s_onControllerRoleChanged(); }
|
||
|
if (Active) { Instance.m_onControllerRoleChanged.Invoke(); }
|
||
|
}
|
||
|
|
||
|
private static void InvokeInputFocusEvent(bool value)
|
||
|
{
|
||
|
if (s_onInputFocus != null) { s_onInputFocus(value); }
|
||
|
if (Active) { Instance.m_onInputFocus.Invoke(value); }
|
||
|
}
|
||
|
|
||
|
private static void InvokeDeviceConnectedEvent(uint deviceIndex, bool connected)
|
||
|
{
|
||
|
if (s_onDeviceConnected != null) { s_onDeviceConnected(deviceIndex, connected); }
|
||
|
if (Active) { Instance.m_onDeviceConnected.Invoke(deviceIndex, connected); }
|
||
|
}
|
||
|
|
||
|
private static void InvokeActiveModuleChangedEvent(VRModuleActiveEnum activeModule)
|
||
|
{
|
||
|
if (s_onActiveModuleChanged != null) { s_onActiveModuleChanged(activeModule); }
|
||
|
if (Active) { Instance.m_onActiveModuleChanged.Invoke(activeModule); }
|
||
|
}
|
||
|
}
|
||
|
}
|