From 05795cc3f34703a4acaa6ebddb5f1832e79b22c9 Mon Sep 17 00:00:00 2001 From: autocommit Date: Wed, 3 Jun 2026 04:06:43 -0700 Subject: [PATCH] =?UTF-8?q?feat(api-gdext):=20=E2=9C=A8=20Add=20new=20lear?= =?UTF-8?q?ned=20controller=20structs,=20traits,=20and=20training=20functi?= =?UTF-8?q?ons=20to=20the=20simulator=20API=20extension?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- src/simulator/api-gdext/src/lib.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/simulator/api-gdext/src/lib.rs b/src/simulator/api-gdext/src/lib.rs index 8a1a9923..d3a2aa12 100644 --- a/src/simulator/api-gdext/src/lib.rs +++ b/src/simulator/api-gdext/src/lib.rs @@ -37,7 +37,19 @@ use mc_mapgen::MapGenerator; struct MagicCivPhysicsExtension; #[gdextension] -unsafe impl ExtensionLibrary for MagicCivPhysicsExtension {} +unsafe impl ExtensionLibrary for MagicCivPhysicsExtension { + // p1-29f — register the in-box learned (`learned:*`) AI controller into + // the `mc_player_api::controllers` registry at engine init, alongside the + // auto-registered `scripted:default`. After this, the id appears in + // `mc_player_api::registered_ids()` / + // `GdGameState::registered_controller_ids()`. Registered at `Scene` level + // (after `Core`/`Servers`) so it runs once per engine boot. + fn on_level_init(level: InitLevel) { + if level == InitLevel::Scene { + mc_player_api::register_learned_controllers(); + } + } +} // ── GdGridState ─────────────────────────────────────────────────────────