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);
}
}
}