151 lines
4.4 KiB
C#
151 lines
4.4 KiB
C#
|
using System;
|
||
|
using UnityEngine;
|
||
|
|
||
|
using UnityEngine.Scripting.APIUpdating;
|
||
|
using UnityEngine.U2D;
|
||
|
|
||
|
namespace UnityEditor.U2D.Animation
|
||
|
{
|
||
|
/// <summary>An interface that allows Sprite Editor Modules to edit Character data for user custom importer.</summary>
|
||
|
/// <remarks>Implement this interface for [[ScriptedImporter]] to leverage on Sprite Editor Modules to edit Character data.</remarks>
|
||
|
[MovedFrom("UnityEditor.U2D.Experimental.Animation")]
|
||
|
public interface ICharacterDataProvider
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Returns the CharacterData structure that represents the Character composition.
|
||
|
/// </summary>
|
||
|
/// <returns>CharacterData data</returns>
|
||
|
CharacterData GetCharacterData();
|
||
|
/// <summary>
|
||
|
/// Sets the CharacterData structure that represents to the data provider
|
||
|
/// </summary>
|
||
|
/// <param name="characterData">CharacterData to set</param>
|
||
|
void SetCharacterData(CharacterData characterData);
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Data structure that represents a character setup
|
||
|
/// </summary>
|
||
|
[Serializable]
|
||
|
[MovedFrom("UnityEditor.U2D.Experimental.Animation")]
|
||
|
public struct CharacterData
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// SpriteBones influencing the Character
|
||
|
/// </summary>
|
||
|
public SpriteBone[] bones;
|
||
|
|
||
|
/// <summary>
|
||
|
/// Parts of the character
|
||
|
/// </summary>
|
||
|
public CharacterPart[] parts;
|
||
|
/// <summary>
|
||
|
/// The dimension of the character required
|
||
|
/// </summary>
|
||
|
public Vector2Int dimension;
|
||
|
/// <summary>
|
||
|
/// Character grouping information
|
||
|
/// </summary>
|
||
|
public CharacterGroup[] characterGroups;
|
||
|
|
||
|
/// <summary>
|
||
|
/// Bones are readonly
|
||
|
/// </summary>
|
||
|
[Obsolete("boneReadOnly is no longer part of CharacterData. To check if character has Main Skeleton assigned to it, please use IMainSkeletonDataProvider instead.")]
|
||
|
public bool boneReadOnly;
|
||
|
}
|
||
|
|
||
|
internal interface ICharacterOrder
|
||
|
{
|
||
|
int order { get; set;}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Data structure representing CharacterPart grouping
|
||
|
/// </summary>
|
||
|
[Serializable]
|
||
|
[MovedFrom("UnityEditor.U2D.Experimental.Animation")]
|
||
|
public struct CharacterGroup : ICharacterOrder
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Name of the CharacterGroup
|
||
|
/// </summary>
|
||
|
public string name;
|
||
|
/// <summary>
|
||
|
/// The parent group index it belongs to. Set to -1 if does not have a parent.
|
||
|
/// </summary>
|
||
|
public int parentGroup;
|
||
|
|
||
|
[SerializeField]
|
||
|
int m_Order;
|
||
|
|
||
|
/// <summary>
|
||
|
/// The order of the group in the list
|
||
|
/// </summary>
|
||
|
public int order
|
||
|
{
|
||
|
get => m_Order;
|
||
|
set => m_Order = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Data structure representing a character part
|
||
|
/// </summary>
|
||
|
[Serializable]
|
||
|
[MovedFrom("UnityEditor.U2D.Experimental.Animation")]
|
||
|
public struct CharacterPart : ICharacterOrder
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Position for the Sprite in the character
|
||
|
/// </summary>
|
||
|
public RectInt spritePosition;
|
||
|
/// <summary>
|
||
|
/// Sprite ID
|
||
|
/// </summary>
|
||
|
public string spriteId;
|
||
|
/// <summary>
|
||
|
/// Bones influencing the Sprite
|
||
|
/// </summary>
|
||
|
public int[] bones;
|
||
|
/// <summary>
|
||
|
/// CharacterGroup that the part belongs to
|
||
|
/// </summary>
|
||
|
public int parentGroup;
|
||
|
|
||
|
[SerializeField]
|
||
|
int m_Order;
|
||
|
|
||
|
/// <summary>
|
||
|
/// The order of the part in the list
|
||
|
/// </summary>
|
||
|
public int order
|
||
|
{
|
||
|
get => m_Order;
|
||
|
set => m_Order = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>An interface that provides data from the Main Skeleton.</summary>
|
||
|
/// <remarks>Available only when the Main Skeleton has been assigned.</remarks>
|
||
|
public interface IMainSkeletonDataProvider
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Returns Main Skeleton data.
|
||
|
/// </summary>
|
||
|
/// <returns>MainSkeletonData data.</returns>
|
||
|
MainSkeletonData GetMainSkeletonData();
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Data structure providing the Main Skeleton data.
|
||
|
/// </summary>
|
||
|
public struct MainSkeletonData
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Returns skeleton bones from the Main Skeleton asset.
|
||
|
/// </summary>
|
||
|
public SpriteBone[] bones;
|
||
|
}
|
||
|
}
|