
typedef struct
{
    int 		 state;
    void		*collideEntity;
    void		*pickEntity;
    void		*pickRelocateHandle;
    void		*relocateData;
}VCBodyPartAppInfo;

typedef struct
{
    VCEntity		*entity;
    VCAttribute		*bodyPart;
    VCBody		*body;
}VCBodyAppCallbackData;

typedef struct
{
    VCAttribute 	*bodyPart;
    VCBody		*body;
}VCBodyAppRelocateData;


#define VC_BODYAPP_COLLIDED	0x00000001
#define VC_BODYAPP_PICK_PRESSED	0x00000002

typedef void (*VCBodyTouchFunc)(VCBodyAppCallbackData *callbackData, void *data);
typedef void (*VCBodyUnTouchFunc)(VCBodyAppCallbackData *callbackData, void *data);
typedef void (*VCBodyPickFunc)(VCBodyAppCallbackData *callbackData, void *data);
typedef void (*VCBodyDropFunc)(VCBodyAppCallbackData *callbackData, void *data);
typedef void (*VCBodyMoveFunc)(VCBodyAppCallbackData *callbackData, void *data);

typedef struct
{
    void	*touchFunc;
    void	*unTouchFunc;
    void	*pickFunc;
    void	*dropFunc;
    void	*moveFunc;
} VCBodyFuncInfo;

void 	*VCBody_AttachInteractionCallbacks(VCBody *body, VCBodyTouchFunc touchFunc,
                                           VCBodyUnTouchFunc unTouchFunc, VCBodyPickFunc pickFunc,
                                           VCBodyDropFunc dropFunc, VCBodyMoveFunc moveFunc, void *data);
    
void	 VCBody_DetachInteractionCallbacks(VCBody *body, void *callbackHandle);
