namespace VRTK.UnityEventHelper
|
|
{
|
|
using UnityEngine;
|
|
|
|
public abstract class VRTK_UnityEvents<T> : MonoBehaviour where T : Component
|
|
{
|
|
private T component;
|
|
|
|
protected abstract void AddListeners(T component);
|
|
protected abstract void RemoveListeners(T component);
|
|
|
|
protected virtual void OnEnable()
|
|
{
|
|
component = GetComponent<T>();
|
|
|
|
if (component != null)
|
|
{
|
|
AddListeners(component);
|
|
}
|
|
else
|
|
{
|
|
string eventsScriptName = GetType().Name;
|
|
string scriptName = component.GetType().Name;
|
|
VRTK_Logger.Error(string.Format("The {0} script requires to be attached to a GameObject that contains a {1} script.", eventsScriptName, scriptName));
|
|
}
|
|
}
|
|
|
|
protected virtual void OnDisable()
|
|
{
|
|
if (component != null)
|
|
{
|
|
RemoveListeners(component);
|
|
}
|
|
}
|
|
}
|
|
}
|