/*
* update an aoi object.
* "w" : watcher
* "m" : marker
* "wm" : watcher and marker
* "d" : drop an object
*/
void aoi_update(struct aoi_space * space , uint32_t id, const char * mode , float pos[3]);
/*
* define a callback function first, and call aoi_message in your timer or main loop.
*/
void aoi_message(struct aoi_space *space, aoi_Callback cb, void *ud);
/*
* You can define your own allocator for each independent space.
* typedef void * (*aoi_Alloc)(void *ud, void * ptr, size_t sz);
*/
struct aoi_space * aoi_create(aoi_Alloc alloc, void *ud);
void aoi_release(struct aoi_space *);
/*
* You can use the default allocator
*/
struct aoi_space * aoi_new();
See test.c for example.
See http://blog.codingnow.com/2012/03/dev_note_13.html for algorithm (In chinese) .