45 lines
1.2 KiB
C
45 lines
1.2 KiB
C
/**
|
|
* Copyright (c) 2026 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#pragma once
|
|
#include "keyframe.h"
|
|
|
|
#define ANIMATION_PROPERTY_KEYFRAME_COUNT_MAX 16
|
|
|
|
typedef struct {
|
|
keyframe_t keyframes[ANIMATION_PROPERTY_KEYFRAME_COUNT_MAX];
|
|
uint8_t keyframeCount;
|
|
float_t *target;
|
|
} animationproperty_t;
|
|
|
|
/**
|
|
* Appends a keyframe to a property. Keyframes must be added in ascending time
|
|
* order. Updates the animation's duration.
|
|
*
|
|
* @param property The property to add the keyframe to.
|
|
* @param time The time of the keyframe, in seconds.
|
|
* @param value The value of the keyframe.
|
|
* @param easing The easing type to use when interpolating to the next keyframe.
|
|
*/
|
|
void animationPropertyAddKeyframe(
|
|
animationproperty_t *property,
|
|
const float_t time,
|
|
const float_t value,
|
|
const easingtype_t easing
|
|
);
|
|
|
|
/**
|
|
* Gets the property's value at a given time.
|
|
*
|
|
* @param prop The property to get the value from.
|
|
* @param time The time at which to get the value, in seconds.
|
|
* @return The value of the property at the given time.
|
|
*/
|
|
float_t animationPropertyGetValue(
|
|
const animationproperty_t *prop,
|
|
const float_t time
|
|
); |