Funkin/source/funkin/data/animation/AnimationData.hx

122 lines
2.9 KiB
Haxe

package funkin.data.animation;
class AnimationDataUtil
{
public static function toNamed(data:UnnamedAnimationData, ?name:String = ""):AnimationData
{
return {
name: name,
prefix: data.prefix,
assetPath: data.assetPath,
offsets: data.offsets,
looped: data.looped,
flipX: data.flipX,
flipY: data.flipY,
frameRate: data.frameRate,
frameIndices: data.frameIndices
};
}
public static function toUnnamed(data:AnimationData):UnnamedAnimationData
{
return {
prefix: data.prefix,
assetPath: data.assetPath,
offsets: data.offsets,
looped: data.looped,
flipX: data.flipX,
flipY: data.flipY,
frameRate: data.frameRate,
frameIndices: data.frameIndices
};
}
}
/**
* A data structure representing an animation in a spritesheet.
* This is a generic data structure used by characters, stage props, and more!
* BE CAREFUL when changing it.
*/
typedef AnimationData =
{
> UnnamedAnimationData,
/**
* The name for the animation.
* This should match the animation name queried by the game;
* for example, characters need animations with names `idle`, `singDOWN`, `singUPmiss`, etc.
*/
var name:String;
}
/**
* A data structure representing an animation in a spritesheet.
* This animation doesn't specify a name, that's presumably specified by the parent data structure.
*/
typedef UnnamedAnimationData =
{
/**
* The prefix for the frames of the animation as defined by the XML file.
* This will may or may not differ from the `name` of the animation,
* depending on how your animator organized their FLA or whatever.
*/
var prefix:String;
/**
* Optionally specify an asset path to use for this specific animation.
* ONLY for use by MultiSparrow characters.
* @default The assetPath of the parent sprite
*/
@:optional
var assetPath:Null<String>;
/**
* Offset the character's position by this amount when playing this animation.
* @default [0, 0]
*/
@:default([0, 0])
@:optional
var offsets:Null<Array<Float>>;
/**
* Whether the animation should loop when it finishes.
* @default false
*/
@:default(false)
@:optional
var looped:Bool;
/**
* Whether the animation's sprites should be flipped horizontally.
* @default false
*/
@:default(false)
@:optional
var flipX:Null<Bool>;
/**
* Whether the animation's sprites should be flipped vertically.
* @default false
*/
@:default(false)
@:optional
var flipY:Null<Bool>;
/**
* The frame rate of the animation.
* @default 24
*/
@:default(24)
@:optional
var frameRate:Null<Int>;
/**
* If you want this animation to use only certain frames of an animation with a given prefix,
* select them here.
* @example [0, 1, 2, 3] (use only the first four frames)
* @default [] (all frames)
*/
@:default([])
@:optional
var frameIndices:Null<Array<Int>>;
}