#include #include #include #include #include #include "types.h" position create_position(int x, int y) { return position{x, y}; } void set_up() { using namespace entt::literals; entt::meta() .type("position"_hs) .ctor<&create_position>() .data<&position::x>("x"_hs) .data<&position::y>("y"_hs); entt::meta() .type("velocity"_hs) .ctor<>() .data<&velocity::dx>("dx"_hs) .data<&velocity::dy>("dy"_hs); } void tear_down() { entt::meta_reset(); entt::meta_reset(); } CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) { switch(operation) { case CR_LOAD: entt::meta_ctx::bind(static_cast(ctx->userdata)->ctx); set_up(); break; case CR_STEP: static_cast(ctx->userdata)->any = 42; break; case CR_UNLOAD: case CR_CLOSE: tear_down(); break; } return 0; }