I've been meaning to ask this question for a while now. What's going on with these functions? Why are the names in parenthesis?
void (*think)(gentity_t *self);
void (*reached)(gentity_t *self); // movers call this when hitting endpoint
void (*blocked)(gentity_t *self, gentity_t *other);
void (*touch)(gentity_t *self, gentity_t *other, trace_t *trace);
These declarations are function pointers, which point to a function and can be changed at any time.
I suggest you do some research on function pointers in C because they are very useful.
If you know C++'s
std::function
then these are effectively the old C version of them.