typedef int (* XPLMCameraControl_f)( XPLMCameraPosition_t * outCameraPosition, /* Can be NULL */ int inIsLosingControl, void * inRefcon);
You use an XPLMCameraControl function to provide continuous control over the camera. You are passed in a structure in which to put the new camera position; modify it and return 1 to reposition the camera. Return 0 to surrender control of the camera; camera control will be handled by X-Plane on this draw loop. The contents of the structure as you are called are undefined.
If X-Plane is taking camera control away from you, this function will be called with inIsLosingControl set to 1 and ioCameraPosition NULL.