X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;ds=sidebyside;f=skeleton.h;h=9729b64c04a95b7b052ba1daa3f280f444670a44;hb=5fa590f62aa7e62a8b6b07e10556c2ecc54cdca6;hp=868e62431b174e0975190521b5308aef458d485d;hpb=4e9c3ed7d90219258c6b7d88cf389188dbbdfd70;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skeleton.h b/skeleton.h index 868e624..9729b64 100644 --- a/skeleton.h +++ b/skeleton.h @@ -2,9 +2,8 @@ * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved */ -#ifndef SKELETON_H -#define SKELETON_H - +#pragma once +#include "vg/vg_lines.h" #include "model.h" struct skeleton @@ -91,12 +90,18 @@ static void keyframe_rotate_around( mdl_keyframe *kf, q_normalize( kf->q ); } +static void keyframe_lerp( mdl_keyframe *kfa, mdl_keyframe *kfb, f32 t, + mdl_keyframe *kfd ){ + v3_lerp( kfa->co, kfb->co, t, kfd->co ); + q_nlerp( kfa->q, kfb->q, t, kfd->q ); + v3_lerp( kfa->s, kfb->s, t, kfd->s ); +} + /* * Lerp between two sets of keyframes and store in dest. Rotations use Nlerp. */ static void keyframe_lerp_pose( mdl_keyframe *kfa, mdl_keyframe *kfb, - float t, mdl_keyframe *kfd, int count ) -{ + float t, mdl_keyframe *kfd, int count ){ if( t <= 0.0001f ){ keyframe_copy_pose( kfa, kfd, count ); return; @@ -106,11 +111,8 @@ static void keyframe_lerp_pose( mdl_keyframe *kfa, mdl_keyframe *kfb, return; } - for( int i=0; i