#ifndef LICKS_DYNAMIC_SEQUENCER_H #define LICKS_DYNAMIC_SEQUENCER_H #include #include "linalg.h" #include "ik.h" typedef enum { seq_nop=0, seq_move_body, seq_rotate_body, seq_move_leg, seq_rotate_leg, seq_move_leg_parabolic, seq_walk } sequencer_command; typedef struct { sequencer_command command; uint32_t frame_delay; uint32_t frame_duration; uint32_t frame_t; vector3d arg_vector3d; int arg_int; double arg_double; void *arg_pointer; void *arg_pointer2; } sequencer_entry; typedef struct { double step_height; int step_duration; vector3d step_direction; double step_rotation; vector3d last_step_direction; double last_step_rotation; } sequencer_walk_parameters; extern void sequencer_init(); extern void sequencer_dump(); extern void sequencer_run_frame(bot *b); extern sequencer_entry *sequencer_new_entry(); extern void sequencer_move_body(int,int,vector3d *); extern void sequencer_rotate_body(int,int,vector3d *); extern void sequencer_rotate_deg_body(int,int,vector3d *); extern void sequencer_move_leg(int,int,int,vector3d *); extern void sequencer_rotate_leg(int, int, int, vector3d *); extern void sequencer_move_leg_parabolic(int,int,int,vector3d *); extern void sequencer_tripod_walk(int,int,vector3d *, double,double, int); extern void sequencer_walk(sequencer_walk_parameters *p); #endif