void SetDefaultCollisionHandler(Func <Arbiter, Space, bool> beginFunc, Func <Arbiter, Space, bool> preSolveFunc, Action <Arbiter, Space> postSolveFunc, Action <Arbiter, Space> separateFunc) { BeginFunc begin = beginFunc == null ? (BeginFunc)null : (arbiter, space, data) => { return(beginFunc(new Arbiter(arbiter), this)); }; PreSolveFunc presolve = preSolveFunc == null ? (PreSolveFunc)null : (arbiter, space, data) => { return(preSolveFunc(new Arbiter(arbiter), this)); }; PostSolveFunc postsolve = postSolveFunc == null ? (PostSolveFunc)null : (arbiter, space, data) => { postSolveFunc(new Arbiter(arbiter), this); }; SeparateFunc separate = separateFunc == null ? (SeparateFunc)null : (arbiter, psace, data) => { separateFunc(new Arbiter(arbiter), this); }; cpSpaceSetDefaultCollisionHandler(Handle.Handle, begin, presolve, postsolve, separate, IntPtr.Zero); }
extern static void cpSpaceSetDefaultCollisionHandler(IntPtr space, BeginFunc begin, PreSolveFunc presolve, PostSolveFunc postsolve, SeparateFunc separate, IntPtr data);
extern static void cpSpaceAddCollisionHandler(IntPtr space, uint collisionTypeA, uint collisionTypeB, BeginFunc begin, PreSolveFunc presolve, PostSolveFunc postsolve, SeparateFunc separate, IntPtr data);