#ifndef CTRL_H
#define CTRL_H

#define MAX_CTRL_ARGS   128
#define MAX_CTRL_NAME   128

struct particle_system_s;

/*
 * Scalar and vector controllers
 */
#ifdef  _MSC_VER
#define CTRL_CALL   __fastcall
#else   /* !_MSC_VER */
#define CTRL_CALL
#endif  /* !_MSC_VER */

typedef vec_t (CTRL_CALL *float_controller_t)(struct particle_system_s *model,vec_p custom);
typedef void (CTRL_CALL *vec3_controller_t)(struct particle_system_s *model,vec_p custom,vec3_t ret_val);

float_controller_t
get_float_controller(char *ctrl_name,u32_t *requires_floats_ret);

vec3_controller_t
get_vec3_controller(char *ctrl_name,u32_t *requires_floats_ret);

void
help_controllers(void);

#endif  /* !CTRL_H */
