using System.ComponentModel; using Microsoft.MixedReality.Toolkit.UI; using OmiLAXR.TrackingBehaviours; using UnityEngine; using Object = UnityEngine.Object; namespace OmiLAXR.MRTK2.TrackingBehaviours { [AddComponentMenu("OmiLAXR / 3) Tracking Behaviours / Manipulation Tracking Behaviour (MRTK2)"), Description("Tracks manipulation events of components.")] public class ManipulationTrackingBehaviour : TrackingBehaviour { public TrackingBehaviourEvent OnManipulationStarted = new TrackingBehaviourEvent(); public TrackingBehaviourEvent OnManipulationEnded = new TrackingBehaviourEvent(); protected override void AfterFilteredObjects(Object[] objects) { var selectables = Select(objects); foreach (var selectable in selectables) { OnManipulationStarted.Bind(selectable.OnManipulationStarted, (evenData) => { OnManipulationStarted.Invoke(this, selectable, evenData); }); OnManipulationEnded.Bind(selectable.OnManipulationEnded, (evenData) => { OnManipulationEnded.Invoke(this, selectable, evenData); }); } } } }