Singularity/Library/PackageCache/com.unity.2d.animation@7.0.10/Editor/ICharacterDataProvider.cs

151 lines
4.4 KiB
C#
Raw Permalink Normal View History

2024-05-06 14:45:45 -04:00
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;
}
}