namespace VRTK.Prefabs.Interactions.Haptics
{
using UnityEngine;
using Malimbe.XmlDocumentationAttribute;
using Malimbe.PropertySerializationAttribute;
using Zinnia.Rule;
using Zinnia.Haptics;
using Zinnia.Extension;
using Zinnia.Event.Proxy;
using Zinnia.Data.Attribute;
public class InteractorHapticsConfigurator : MonoBehaviour
{
#region Facade Settings
///
/// The public interface facade.
///
[Serialized]
[field: Header("Facade Settings"), DocumentedByXml, Restricted]
public InteractorHapticsFacade Facade { get; protected set; }
#endregion
#region Reference Settings
///
/// The to determine which controller to rumble.
///
[Serialized]
[field: Header("Reference Settings"), DocumentedByXml, Restricted]
public RulesMatcher RulesToMatch { get; protected set; }
///
/// The that rumbles the left controller.
///
[Serialized]
[field: DocumentedByXml, Restricted]
public XRNodeHapticPulser LeftHapicPuliser { get; protected set; }
///
/// The that rumbles the right controller.
///
[Serialized]
[field: DocumentedByXml, Restricted]
public XRNodeHapticPulser RightHapicPuliser { get; protected set; }
///
/// The that initiates the haptics process.
///
[Serialized]
[field: DocumentedByXml, Restricted]
public EmptyEventProxyEmitter BeginHaptics { get; protected set; }
///
/// The that cancels the haptics process.
///
[Serialized]
[field: DocumentedByXml, Restricted]
public EmptyEventProxyEmitter CancelHaptics { get; protected set; }
#endregion
protected virtual void OnEnable()
{
LeftHapicPuliser.RunWhenActiveAndEnabled(() => LeftHapicPuliser.Intensity = Facade.Intensity);
RightHapicPuliser.RunWhenActiveAndEnabled(() => RightHapicPuliser.Intensity = Facade.Intensity);
RulesToMatch.gameObject.SetActive(Facade.OnlyRumbleActiveInteractor);
}
}
}