first commit
This commit is contained in:
289
src/anm2.h
Normal file
289
src/anm2.h
Normal file
@@ -0,0 +1,289 @@
|
||||
#pragma once
|
||||
|
||||
#include "COMMON.h"
|
||||
|
||||
#define ANM2_SCALE_CONVERT(x) ((f32)x / 100.0f)
|
||||
#define ANM2_TINT_CONVERT(x) ((f32)x / 255.0f)
|
||||
|
||||
#define ANM2_STRING_MAX 255
|
||||
|
||||
/* Elements */
|
||||
#define STRING_ANM2_ELEMENT_ANIMATED_ACTOR "AnimatedActor"
|
||||
#define STRING_ANM2_ELEMENT_INFO "Info"
|
||||
#define STRING_ANM2_ELEMENT_CONTENT "Content"
|
||||
#define STRING_ANM2_ELEMENT_SPRITESHEETS "Spritesheets"
|
||||
#define STRING_ANM2_ELEMENT_SPRITESHEET "Spritesheet"
|
||||
#define STRING_ANM2_ELEMENT_LAYERS "Layers"
|
||||
#define STRING_ANM2_ELEMENT_LAYER "Layer"
|
||||
#define STRING_ANM2_ELEMENT_NULLS "Nulls"
|
||||
#define STRING_ANM2_ELEMENT_NULL "Null"
|
||||
#define STRING_ANM2_ELEMENT_EVENTS "Events"
|
||||
#define STRING_ANM2_ELEMENT_EVENT "Event"
|
||||
#define STRING_ANM2_ELEMENT_ANIMATIONS "Animations"
|
||||
#define STRING_ANM2_ELEMENT_ANIMATION "Animation"
|
||||
#define STRING_ANM2_ELEMENT_ROOT_ANIMATION "RootAnimation"
|
||||
#define STRING_ANM2_ELEMENT_FRAME "Frame"
|
||||
#define STRING_ANM2_ELEMENT_LAYER_ANIMATIONS "LayerAnimations"
|
||||
#define STRING_ANM2_ELEMENT_LAYER_ANIMATION "LayerAnimation"
|
||||
#define STRING_ANM2_ELEMENT_NULL_ANIMATIONS "NullAnimations"
|
||||
#define STRING_ANM2_ELEMENT_NULL_ANIMATION "NullAnimation"
|
||||
#define STRING_ANM2_ELEMENT_TRIGGERS "Triggers"
|
||||
#define STRING_ANM2_ELEMENT_TRIGGER "Trigger"
|
||||
|
||||
/* Attributes */
|
||||
#define STRING_ANM2_ATTRIBUTE_CREATED_BY "CreatedBy"
|
||||
#define STRING_ANM2_ATTRIBUTE_CREATED_ON "CreatedOn"
|
||||
#define STRING_ANM2_ATTRIBUTE_FPS "Fps"
|
||||
#define STRING_ANM2_ATTRIBUTE_VERSION "Version"
|
||||
#define STRING_ANM2_ATTRIBUTE_ID "Id"
|
||||
#define STRING_ANM2_ATTRIBUTE_PATH "Path"
|
||||
#define STRING_ANM2_ATTRIBUTE_NAME "Name"
|
||||
#define STRING_ANM2_ATTRIBUTE_SPRITESHEET_ID "SpritesheetId"
|
||||
#define STRING_ANM2_ATTRIBUTE_SHOW_RECT "ShowRect"
|
||||
#define STRING_ANM2_ATTRIBUTE_DEFAULT_ANIMATION "DefaultAnimation"
|
||||
#define STRING_ANM2_ATTRIBUTE_FRAME_NUM "FrameNum"
|
||||
#define STRING_ANM2_ATTRIBUTE_LOOP "Loop"
|
||||
#define STRING_ANM2_ATTRIBUTE_X_POSITION "XPosition"
|
||||
#define STRING_ANM2_ATTRIBUTE_Y_POSITION "YPosition"
|
||||
#define STRING_ANM2_ATTRIBUTE_X_PIVOT "XPivot"
|
||||
#define STRING_ANM2_ATTRIBUTE_Y_PIVOT "YPivot"
|
||||
#define STRING_ANM2_ATTRIBUTE_X_CROP "XCrop"
|
||||
#define STRING_ANM2_ATTRIBUTE_Y_CROP "YCrop"
|
||||
#define STRING_ANM2_ATTRIBUTE_WIDTH "Width"
|
||||
#define STRING_ANM2_ATTRIBUTE_HEIGHT "Height"
|
||||
#define STRING_ANM2_ATTRIBUTE_X_SCALE "XScale"
|
||||
#define STRING_ANM2_ATTRIBUTE_Y_SCALE "YScale"
|
||||
#define STRING_ANM2_ATTRIBUTE_DELAY "Delay"
|
||||
#define STRING_ANM2_ATTRIBUTE_VISIBLE "Visible"
|
||||
#define STRING_ANM2_ATTRIBUTE_RED_TINT "RedTint"
|
||||
#define STRING_ANM2_ATTRIBUTE_GREEN_TINT "GreenTint"
|
||||
#define STRING_ANM2_ATTRIBUTE_BLUE_TINT "BlueTint"
|
||||
#define STRING_ANM2_ATTRIBUTE_ALPHA_TINT "AlphaTint"
|
||||
#define STRING_ANM2_ATTRIBUTE_RED_OFFSET "RedOffset"
|
||||
#define STRING_ANM2_ATTRIBUTE_GREEN_OFFSET "GreenOffset"
|
||||
#define STRING_ANM2_ATTRIBUTE_BLUE_OFFSET "BlueOffset"
|
||||
#define STRING_ANM2_ATTRIBUTE_ROTATION "Rotation"
|
||||
#define STRING_ANM2_ATTRIBUTE_INTERPOLATED "Interpolated"
|
||||
#define STRING_ANM2_ATTRIBUTE_LAYER_ID "LayerId"
|
||||
#define STRING_ANM2_ATTRIBUTE_NULL_ID "NullId"
|
||||
#define STRING_ANM2_ATTRIBUTE_EVENT_ID "EventId"
|
||||
#define STRING_ANM2_ATTRIBUTE_AT_FRAME "AtFrame"
|
||||
|
||||
#define ANM2_ELEMENT_COUNT (ANM2_ELEMENT_TRIGGER + 1)
|
||||
enum Anm2Element
|
||||
{
|
||||
ANM2_ELEMENT_ANIMATED_ACTOR,
|
||||
ANM2_ELEMENT_INFO,
|
||||
ANM2_ELEMENT_CONTENT,
|
||||
ANM2_ELEMENT_SPRITESHEETS,
|
||||
ANM2_ELEMENT_SPRITESHEET,
|
||||
ANM2_ELEMENT_LAYERS,
|
||||
ANM2_ELEMENT_LAYER,
|
||||
ANM2_ELEMENT_NULLS,
|
||||
ANM2_ELEMENT_NULL,
|
||||
ANM2_ELEMENT_EVENTS,
|
||||
ANM2_ELEMENT_EVENT,
|
||||
ANM2_ELEMENT_ANIMATIONS,
|
||||
ANM2_ELEMENT_ANIMATION,
|
||||
ANM2_ELEMENT_ROOT_ANIMATION,
|
||||
ANM2_ELEMENT_FRAME,
|
||||
ANM2_ELEMENT_LAYER_ANIMATIONS,
|
||||
ANM2_ELEMENT_LAYER_ANIMATION,
|
||||
ANM2_ELEMENT_NULL_ANIMATIONS,
|
||||
ANM2_ELEMENT_NULL_ANIMATION,
|
||||
ANM2_ELEMENT_TRIGGERS,
|
||||
ANM2_ELEMENT_TRIGGER
|
||||
};
|
||||
|
||||
static const char* ANM2_ELEMENT_STRINGS[ANM2_ELEMENT_COUNT] =
|
||||
{
|
||||
STRING_ANM2_ELEMENT_ANIMATED_ACTOR,
|
||||
STRING_ANM2_ELEMENT_INFO,
|
||||
STRING_ANM2_ELEMENT_CONTENT,
|
||||
STRING_ANM2_ELEMENT_SPRITESHEETS,
|
||||
STRING_ANM2_ELEMENT_SPRITESHEET,
|
||||
STRING_ANM2_ELEMENT_LAYERS,
|
||||
STRING_ANM2_ELEMENT_LAYER,
|
||||
STRING_ANM2_ELEMENT_NULLS,
|
||||
STRING_ANM2_ELEMENT_NULL,
|
||||
STRING_ANM2_ELEMENT_EVENTS,
|
||||
STRING_ANM2_ELEMENT_EVENT,
|
||||
STRING_ANM2_ELEMENT_ANIMATIONS,
|
||||
STRING_ANM2_ELEMENT_ANIMATION,
|
||||
STRING_ANM2_ELEMENT_ROOT_ANIMATION,
|
||||
STRING_ANM2_ELEMENT_FRAME,
|
||||
STRING_ANM2_ELEMENT_LAYER_ANIMATIONS,
|
||||
STRING_ANM2_ELEMENT_LAYER_ANIMATION,
|
||||
STRING_ANM2_ELEMENT_NULL_ANIMATIONS,
|
||||
STRING_ANM2_ELEMENT_NULL_ANIMATION,
|
||||
STRING_ANM2_ELEMENT_TRIGGERS,
|
||||
STRING_ANM2_ELEMENT_TRIGGER
|
||||
};
|
||||
|
||||
#define ANM2_ATTRIBUTE_COUNT (ANM2_ATTRIBUTE_AT_FRAME + 1)
|
||||
enum Anm2Attribute
|
||||
{
|
||||
ANM2_ATTRIBUTE_CREATED_BY,
|
||||
ANM2_ATTRIBUTE_CREATED_ON,
|
||||
ANM2_ATTRIBUTE_FPS,
|
||||
ANM2_ATTRIBUTE_VERSION,
|
||||
ANM2_ATTRIBUTE_ID,
|
||||
ANM2_ATTRIBUTE_PATH,
|
||||
ANM2_ATTRIBUTE_NAME,
|
||||
ANM2_ATTRIBUTE_SPRITESHEET_ID,
|
||||
ANM2_ATTRIBUTE_SHOW_RECT,
|
||||
ANM2_ATTRIBUTE_DEFAULT_ANIMATION,
|
||||
ANM2_ATTRIBUTE_FRAME_NUM,
|
||||
ANM2_ATTRIBUTE_LOOP,
|
||||
ANM2_ATTRIBUTE_X_POSITION,
|
||||
ANM2_ATTRIBUTE_Y_POSITION,
|
||||
ANM2_ATTRIBUTE_X_PIVOT,
|
||||
ANM2_ATTRIBUTE_Y_PIVOT,
|
||||
ANM2_ATTRIBUTE_X_CROP,
|
||||
ANM2_ATTRIBUTE_Y_CROP,
|
||||
ANM2_ATTRIBUTE_WIDTH,
|
||||
ANM2_ATTRIBUTE_HEIGHT,
|
||||
ANM2_ATTRIBUTE_X_SCALE,
|
||||
ANM2_ATTRIBUTE_Y_SCALE,
|
||||
ANM2_ATTRIBUTE_DELAY,
|
||||
ANM2_ATTRIBUTE_VISIBLE,
|
||||
ANM2_ATTRIBUTE_RED_TINT,
|
||||
ANM2_ATTRIBUTE_GREEN_TINT,
|
||||
ANM2_ATTRIBUTE_BLUE_TINT,
|
||||
ANM2_ATTRIBUTE_ALPHA_TINT,
|
||||
ANM2_ATTRIBUTE_RED_OFFSET,
|
||||
ANM2_ATTRIBUTE_GREEN_OFFSET,
|
||||
ANM2_ATTRIBUTE_BLUE_OFFSET,
|
||||
ANM2_ATTRIBUTE_ROTATION,
|
||||
ANM2_ATTRIBUTE_INTERPOLATED,
|
||||
ANM2_ATTRIBUTE_LAYER_ID,
|
||||
ANM2_ATTRIBUTE_NULL_ID,
|
||||
ANM2_ATTRIBUTE_EVENT_ID,
|
||||
ANM2_ATTRIBUTE_AT_FRAME
|
||||
};
|
||||
|
||||
static const char* ANM2_ATTRIBUTE_STRINGS[ANM2_ATTRIBUTE_COUNT] =
|
||||
{
|
||||
STRING_ANM2_ATTRIBUTE_CREATED_BY,
|
||||
STRING_ANM2_ATTRIBUTE_CREATED_ON,
|
||||
STRING_ANM2_ATTRIBUTE_FPS,
|
||||
STRING_ANM2_ATTRIBUTE_VERSION,
|
||||
STRING_ANM2_ATTRIBUTE_ID,
|
||||
STRING_ANM2_ATTRIBUTE_PATH,
|
||||
STRING_ANM2_ATTRIBUTE_NAME,
|
||||
STRING_ANM2_ATTRIBUTE_SPRITESHEET_ID,
|
||||
STRING_ANM2_ATTRIBUTE_SHOW_RECT,
|
||||
STRING_ANM2_ATTRIBUTE_DEFAULT_ANIMATION,
|
||||
STRING_ANM2_ATTRIBUTE_FRAME_NUM,
|
||||
STRING_ANM2_ATTRIBUTE_LOOP,
|
||||
STRING_ANM2_ATTRIBUTE_X_POSITION,
|
||||
STRING_ANM2_ATTRIBUTE_Y_POSITION,
|
||||
STRING_ANM2_ATTRIBUTE_X_PIVOT,
|
||||
STRING_ANM2_ATTRIBUTE_Y_PIVOT,
|
||||
STRING_ANM2_ATTRIBUTE_X_CROP,
|
||||
STRING_ANM2_ATTRIBUTE_Y_CROP,
|
||||
STRING_ANM2_ATTRIBUTE_WIDTH,
|
||||
STRING_ANM2_ATTRIBUTE_HEIGHT,
|
||||
STRING_ANM2_ATTRIBUTE_X_SCALE,
|
||||
STRING_ANM2_ATTRIBUTE_Y_SCALE,
|
||||
STRING_ANM2_ATTRIBUTE_DELAY,
|
||||
STRING_ANM2_ATTRIBUTE_VISIBLE,
|
||||
STRING_ANM2_ATTRIBUTE_RED_TINT,
|
||||
STRING_ANM2_ATTRIBUTE_GREEN_TINT,
|
||||
STRING_ANM2_ATTRIBUTE_BLUE_TINT,
|
||||
STRING_ANM2_ATTRIBUTE_ALPHA_TINT,
|
||||
STRING_ANM2_ATTRIBUTE_RED_OFFSET,
|
||||
STRING_ANM2_ATTRIBUTE_GREEN_OFFSET,
|
||||
STRING_ANM2_ATTRIBUTE_BLUE_OFFSET,
|
||||
STRING_ANM2_ATTRIBUTE_ROTATION,
|
||||
STRING_ANM2_ATTRIBUTE_INTERPOLATED,
|
||||
STRING_ANM2_ATTRIBUTE_LAYER_ID,
|
||||
STRING_ANM2_ATTRIBUTE_NULL_ID,
|
||||
STRING_ANM2_ATTRIBUTE_EVENT_ID,
|
||||
STRING_ANM2_ATTRIBUTE_AT_FRAME
|
||||
};
|
||||
|
||||
#define ANM2_ANIMATION_TYPE_COUNT (ANM2_ANIMATION_NULL + 1)
|
||||
enum Anm2AnimationType
|
||||
{
|
||||
ANM2_ANIMATION_ROOT,
|
||||
ANM2_ANIMATION_LAYER,
|
||||
ANM2_ANIMATION_NULL
|
||||
};
|
||||
|
||||
struct Anm2Spritesheet
|
||||
{
|
||||
s32 id;
|
||||
char path[ANM2_STRING_MAX];
|
||||
};
|
||||
|
||||
struct Anm2Layer
|
||||
{
|
||||
s32 id;
|
||||
char name[ANM2_STRING_MAX];
|
||||
s32 spritesheetID;
|
||||
};
|
||||
|
||||
struct Anm2Event
|
||||
{
|
||||
s32 id;
|
||||
char name[ANM2_STRING_MAX];
|
||||
};
|
||||
|
||||
struct Anm2Trigger
|
||||
{
|
||||
s32 eventID;
|
||||
s32 frame;
|
||||
};
|
||||
|
||||
struct Anm2Frame
|
||||
{
|
||||
bool isInterpolated;
|
||||
bool isVisible;
|
||||
f32 rotation;
|
||||
s32 delay;
|
||||
ivec2 crop;
|
||||
ivec2 pivot;
|
||||
ivec2 position;
|
||||
ivec2 size;
|
||||
ivec2 scale;
|
||||
ivec3 colorOffset;
|
||||
ivec4 tint;
|
||||
s32 index;
|
||||
};
|
||||
|
||||
struct Anm2LayerAnimation
|
||||
{
|
||||
s32 layerID;
|
||||
bool isVisible;
|
||||
vector<Anm2Frame> frames;
|
||||
};
|
||||
|
||||
struct Anm2Animation
|
||||
{
|
||||
s32 id;
|
||||
s32 length;
|
||||
char name[ANM2_STRING_MAX];
|
||||
bool isVisible;
|
||||
bool isLoop;
|
||||
Anm2Frame rootAnimationFrame;
|
||||
vector<Anm2LayerAnimation> layerAnimations;
|
||||
vector<Anm2Trigger> triggers;
|
||||
};
|
||||
|
||||
struct Anm2
|
||||
{
|
||||
s32 fps;
|
||||
s32 version;
|
||||
char createdBy[ANM2_STRING_MAX];
|
||||
char createdOn[ANM2_STRING_MAX];
|
||||
char defaultAnimation[ANM2_STRING_MAX];
|
||||
bool isInit;
|
||||
vector<Anm2Spritesheet> spritesheets;
|
||||
vector<Anm2Layer> layers;
|
||||
vector<Anm2Event> events;
|
||||
vector<Anm2Animation> animations;
|
||||
};
|
||||
|
||||
bool anm2_init(Anm2* self, const char* path);
|
||||
void anm2_free(Anm2* self);
|
Reference in New Issue
Block a user