#ifndef KEYFRAME_CHANNEL_H #define KEYFRAME_CHANNEL_H #include #include namespace vb01{ class Animatable; struct KeyframeChannel{ enum Type{ POS_X, POS_Y, POS_Z, ROT_W, ROT_X, ROT_Y, ROT_Z, SCALE_X, SCALE_Y, SCALE_Z, SHAPE_KEY_MIN, SHAPE_KEY_VALUE, SHAPE_KEY_MAX, SPOTLIGHT_INNER_ANGLE, SPOTLIGHT_OUTER_ANGLE }; struct Keyframe{ enum Interpolation{CONSTANT, LINEAR, BEZIER}; float value, leftHandleValue, rightHandleValue, frame, leftHandleFrame, rightHandleFrame; Interpolation interpolation; }; Type type; Animatable *animatable = nullptr; std::vector keyframes; static float interpolateBezier(std::vector, float); static KeyframeChannel::Type getKeyframeChannelType(std::string); static float interpolate(Keyframe, Keyframe, float); static Keyframe findKeyframe(float, KeyframeChannel, bool); static void transform(); }; typedef KeyframeChannel::Type KeyframeChannelType; typedef KeyframeChannel::Keyframe Keyframe; typedef KeyframeChannel::Keyframe::Interpolation KeyframeInterpolation; } #endif