#include #include #include #include "type_context.h" #include "types.h" inline static type_context *context; template struct entt::type_seq { [[nodiscard]] static id_type value() ENTT_NOEXCEPT { static const entt::id_type value = context->value(entt::type_hash::value()); return value; } }; CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) { switch (operation) { case CR_STEP: if(!context) { context = static_cast(ctx->userdata); } else { // forces things to break auto ®istry = *static_cast(ctx->userdata); registry.prepare(); const auto view = registry.view(); registry.insert(view.begin(), view.end(), velocity{1., 1.}); registry.view().each([](position &pos, velocity &vel) { pos.x += static_cast(16 * vel.dx); pos.y += static_cast(16 * vel.dy); }); } break; case CR_CLOSE: case CR_LOAD: case CR_UNLOAD: // nothing to do here, this is only a test. break; } return 0; }