From 28dec31e186b5d7dc4adb531bdb0e0fc2c745fa9 Mon Sep 17 00:00:00 2001 From: bjorn Date: Wed, 1 Nov 2017 22:53:51 -0700 Subject: [PATCH] Add AnimationData; --- src/loaders/animation.c | 17 +++++++++++++++++ src/loaders/animation.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/loaders/animation.c create mode 100644 src/loaders/animation.h diff --git a/src/loaders/animation.c b/src/loaders/animation.c new file mode 100644 index 00000000..212f0f8f --- /dev/null +++ b/src/loaders/animation.c @@ -0,0 +1,17 @@ +#include "loaders/animation.h" +#include + +AnimationData* lovrAnimationDataCreate(const char* name) { + AnimationData* animationData = malloc(sizeof(AnimationData)); + if (!animationData) return NULL; + + animationData->name = name; + map_init(&animationData->channels); + + return animationData; +} + +void lovrAnimationDataDestroy(AnimationData* animationData) { + map_deinit(&animationData->channels); + free(animationData); +} diff --git a/src/loaders/animation.h b/src/loaders/animation.h new file mode 100644 index 00000000..e7e961a4 --- /dev/null +++ b/src/loaders/animation.h @@ -0,0 +1,29 @@ +#include "lib/vec/vec.h" +#include "lib/map/map.h" + +#pragma once + +typedef struct { + double time; + float data[4]; +} Keyframe; + +typedef vec_t(Keyframe) vec_keyframe_t; + +typedef struct { + const char* node; + vec_keyframe_t positionKeyframes; + vec_keyframe_t rotationKeyframes; + vec_keyframe_t scaleKeyframes; +} AnimationChannel; + +typedef map_t(AnimationChannel) map_channel_t; + +typedef struct { + const char* name; + map_channel_t channels; + int channelCount; +} AnimationData; + +AnimationData* lovrAnimationDataCreate(const char* name); +void lovrAnimationDataDestroy(AnimationData* animationData);