// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2026 Kybernetik //
#if UNITY_EDITOR
using Animancer.TransitionLibraries;
using System;
using UnityEngine;
namespace Animancer.Editor.TransitionLibraries
{
/// [Editor-Only]
/// Additional data for a which is excluded from Runtime Builds.
///
///
/// This class isn't called TransitionLibraryEditorData because
/// previously had that name
/// and changing from a to a regular class with the same name
/// causes errors for any already existing assets of that type.
///
/// https://kybernetik.com.au/animancer/api/Animancer.Editor.TransitionLibraries/TransitionLibraryEditorDataInternal
[Serializable]
public partial class TransitionLibraryEditorDataInternal :
ICopyable,
IEquatable
{
/************************************************************************************************************************/
#region Equality
/************************************************************************************************************************/
/// Are all fields in this object equal to the equivalent in `obj`?
public override bool Equals(object obj)
=> Equals(obj as TransitionLibraryEditorDataInternal);
/// Are all fields in this object equal to the equivalent fields in `other`?
public bool Equals(TransitionLibraryEditorDataInternal other)
=> other != null
&& _TransitionSortMode == other._TransitionSortMode
&& AnimancerUtilities.ContentsAreEqual(_TransitionGroups, other._TransitionGroups);
/// Are all fields in `a` equal to the equivalent fields in `b`?
public static bool operator ==(TransitionLibraryEditorDataInternal a, TransitionLibraryEditorDataInternal b)
=> a is null
? b is null
: a.Equals(b);
/// Are any fields in `a` not equal to the equivalent fields in `b`?
public static bool operator !=(TransitionLibraryEditorDataInternal a, TransitionLibraryEditorDataInternal b)
=> !(a == b);
/************************************************************************************************************************/
/// Returns a hash code based on the values of this object's fields.
public override int GetHashCode()
=> AnimancerUtilities.Hash(287475157,
_TransitionSortMode.GetHashCode(),
_TransitionGroups.SafeGetHashCode());
/************************************************************************************************************************/
///
public void CopyFrom(TransitionLibraryEditorDataInternal copyFrom, CloneContext context)
{
_TransitionSortMode = copyFrom._TransitionSortMode;
var myGroups = TransitionGroups;
var copyGroups = copyFrom.TransitionGroups;
myGroups.Clear();
for (int i = 0; i < copyGroups.Count; i++)
myGroups.Add(copyGroups[i].CopyableClone(context));
}
/************************************************************************************************************************/
#endregion
/************************************************************************************************************************/
}
}
#endif