2024-10-23 17:55:55 +08:00
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Spine Runtimes License Agreement
2024-11-21 09:35:48 +08:00
* Last updated July 28 , 2023. Replaces all prior versions .
2024-10-23 17:55:55 +08:00
*
2024-11-21 09:35:48 +08:00
* Copyright ( c ) 2013 - 2023 , Esoteric Software LLC
2024-10-23 17:55:55 +08:00
*
* Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement :
* http : //esotericsoftware.com/spine-editor-license
*
2024-11-21 09:35:48 +08:00
* Otherwise , it is permitted to integrate the Spine Runtimes into software or
* otherwise create derivative works of the Spine Runtimes ( collectively ,
2024-10-23 17:55:55 +08:00
* "Products" ) , provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice .
*
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED . IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
* DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES
* ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ,
* BUSINESS INTERRUPTION , OR LOSS OF USE , DATA , OR PROFITS ) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
2024-11-21 09:35:48 +08:00
* ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THE
* SPINE RUNTIMES , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
2024-10-23 17:55:55 +08:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
using System ;
namespace Spine {
public class BoneData {
internal int index ;
internal string name ;
internal BoneData parent ;
internal float length ;
internal float x , y , rotation , scaleX = 1 , scaleY = 1 , shearX , shearY ;
2024-11-21 09:35:48 +08:00
internal Inherit inherit = Inherit . Normal ;
2024-10-23 17:55:55 +08:00
internal bool skinRequired ;
/// <summary>The index of the bone in Skeleton.Bones</summary>
public int Index { get { return index ; } }
/// <summary>The name of the bone, which is unique across all bones in the skeleton.</summary>
public string Name { get { return name ; } }
/// <summary>May be null.</summary>
public BoneData Parent { get { return parent ; } }
public float Length { get { return length ; } set { length = value ; } }
/// <summary>Local X translation.</summary>
public float X { get { return x ; } set { x = value ; } }
/// <summary>Local Y translation.</summary>
public float Y { get { return y ; } set { y = value ; } }
2024-11-21 09:35:48 +08:00
/// <summary>Local rotation in degrees, counter clockwise.</summary>
2024-10-23 17:55:55 +08:00
public float Rotation { get { return rotation ; } set { rotation = value ; } }
/// <summary>Local scaleX.</summary>
public float ScaleX { get { return scaleX ; } set { scaleX = value ; } }
/// <summary>Local scaleY.</summary>
public float ScaleY { get { return scaleY ; } set { scaleY = value ; } }
/// <summary>Local shearX.</summary>
public float ShearX { get { return shearX ; } set { shearX = value ; } }
/// <summary>Local shearY.</summary>
public float ShearY { get { return shearY ; } set { shearY = value ; } }
2024-11-21 09:35:48 +08:00
/// <summary>Determines how parent world transforms affect this bone.</summary>
public Inherit Inherit { get { return inherit ; } set { inherit = value ; } }
2024-10-23 17:55:55 +08:00
2024-11-21 09:35:48 +08:00
/// <summary>When true, <see cref="Skeleton.UpdateWorldTransform(Skeleton.Physics)"/> only updates this bone if the <see cref="Skeleton.Skin"/> contains
/// this bone.</summary>
2024-10-23 17:55:55 +08:00
/// <seealso cref="Skin.Bones"/>
public bool SkinRequired { get { return skinRequired ; } set { skinRequired = value ; } }
/// <param name="parent">May be null.</param>
public BoneData ( int index , string name , BoneData parent ) {
if ( index < 0 ) throw new ArgumentException ( "index must be >= 0" , "index" ) ;
if ( name = = null ) throw new ArgumentNullException ( "name" , "name cannot be null." ) ;
this . index = index ;
this . name = name ;
this . parent = parent ;
}
override public string ToString ( ) {
return name ;
}
}
2024-11-21 09:35:48 +08:00
public enum Inherit {
Normal ,
OnlyTranslation ,
NoRotationOrReflection ,
NoScale ,
NoScaleOrReflection
}
public class InheritEnum {
public static readonly Inherit [ ] Values = {
Inherit . Normal ,
Inherit . OnlyTranslation ,
Inherit . NoRotationOrReflection ,
Inherit . NoScale ,
Inherit . NoScaleOrReflection
} ;
2024-10-23 17:55:55 +08:00
}
}