namespace Zinnia.Tracking.Modification.Operation.Extraction { using System; using UnityEngine; using UnityEngine.Events; using Zinnia.Data.Type; using Zinnia.Extension; /// /// Extracts the for the Source and Target contained within the . /// public class TransformPropertyApplierEventDataExtractor : MonoBehaviour { /// /// Defines the event with the specified . /// [Serializable] public class UnityEvent : UnityEvent { } /// /// Emitted when the is extracted. /// public UnityEvent SourceExtracted = new UnityEvent(); /// /// Emitted when the is extracted. /// public UnityEvent TargetExtracted = new UnityEvent(); /// /// The extracted . /// public TransformData SourceResult { get; protected set; } /// /// The extracted . /// public TransformData TargetResult { get; protected set; } /// /// Extracts the source and target from the event data. /// /// The event data to extract from. public virtual void Extract(TransformPropertyApplier.EventData eventData) { if (!this.IsValidState() || eventData == null) { return; } SourceResult = eventData.EventSource; SourceExtracted?.Invoke(SourceResult); TargetResult = eventData.EventTarget; TargetExtracted?.Invoke(TargetResult); } } }