after checking some tutorial codes, mainly in "Animation.cpp", character animation is not too complicated as I see, but 2 separate function loops are used:
- one for skeleton manipulation called "Update()" that defines the position of the corresponding mesh:
cskel.clear(); // clear controlled skeleton animation
cskel.animate(L"../data/anim/walk.anim", Time.time()); // animate with "walk" animation and current time position
cskel.updateMatrix (MatrixIdentity); // update controlled skeleton animation matrixes
cskel.move( Vec(0,0,Sin(Time.time()) ) ); // move skeleton due to vector - here smoothly between +/-1 meter forward-backward
cskel.updateVelocities( ); // update controlled skeleton bone velocities (this is needed for Motion Blur effect)
- and another "Render()" for mesh representation, and mesh is assigned here to the above described controlled skeleton:
Meshes("../data/obj/chr/skeleton/0.mesh")->draw(cskel); // get mesh from cache and render it with controlled skeleton matrixes
Of course it is much more complicated than in Lite-C, where you can use ent_animate() and c_move() within entity action loop.