diff --git a/demo/data/rollball.yml b/demo/data/rollball.yml index 61598f82092029fb69bb39073569635bf81d18f3..df682f1d361a6053a76f856363d77bffb25566a2 100644 --- a/demo/data/rollball.yml +++ b/demo/data/rollball.yml @@ -13,11 +13,11 @@ prefabs: diffuse: [1, 1, 1] specular: [0.0633, 0.727811, 0.633] shininess: 16 -# phys::Body: -# type: static -# shape: -# type: box -# extents: [0.5, 2.5, 20.5] + phys::Body: + type: static + shape: + type: box + extents: [0.5, 2.5, 20.5] # Wall Z shorter to avoid z-fighting - name: "wallZ" components: @@ -32,11 +32,11 @@ prefabs: diffuse: [1, 1, 1] specular: [0.0633, 0.727811, 0.633] shininess: 16 -# phys::Body: -# type: static -# shape: -# type: box -# extents: [ 19.5, 2.5, 0.5 ] + phys::Body: + type: static + shape: + type: box + extents: [ 19.5, 2.5, 0.5 ] - name: "floor" components: Transform: @@ -50,11 +50,11 @@ prefabs: diffuse: [1, 1, 1] specular: [0.0633, 0.727811, 0.633] shininess: 16 -# phys::Body: -# type: static -# shape: -# type: box # we don't (currently) support planes... -# extents: [19.5, 0.25, 19.5] + phys::Body: + type: static + shape: + type: box # we don't (currently) support planes... + extents: [19.5, 0.25, 19.5] - name: player components: Transform: @@ -67,10 +67,10 @@ prefabs: diffuse: [0.4, 0.4, 0.4] specular: [0.774597,0.774597,0.774597] shininess: 16 -# phys::Body: -# shape: -# type: sphere -# radius: 1 + phys::Body: + shape: + type: sphere + radius: 1 - name: collectable components: Transform: @@ -83,9 +83,9 @@ prefabs: diffuse: [1, 1, 1] specular: [0.0633, 0.727811, 0.633] shininess: 16 -# phys::Body: -# type: kinematic -# shape: -# type: box -# phys::Callbacks: -# phys::Cache: \ No newline at end of file + phys::Body: + type: kinematic + shape: + type: box + phys::Callbacks: + phys::Cache: \ No newline at end of file diff --git a/demo/demo/main.cpp b/demo/demo/main.cpp index 24106bb9de13a7ff6055d965716fe0a5ab5452a5..6e20bfcbebe6043ee9b6cdccb2200df559164e5f 100644 --- a/demo/demo/main.cpp +++ b/demo/demo/main.cpp @@ -85,6 +85,7 @@ int main(int argc, const char* argv[]) { moduleManager.use<fggl::display::GLFW>(); moduleManager.use<fggl::assets::AssetFolders>(); moduleManager.use<fggl::entity::ECS>(); + moduleManager.use<fggl::phys::Bullet3>(); moduleManager.resolve(); // create the application diff --git a/fggl/entity/module.cpp b/fggl/entity/module.cpp index 4037902587a33107b8eb6bfea594aa2e671627da..ee6b1c00d7f5ba5b13fece3d2a0345567a58f5dc 100644 --- a/fggl/entity/module.cpp +++ b/fggl/entity/module.cpp @@ -32,7 +32,7 @@ namespace fggl::entity { factory->bind(math::Transform::guid, make_transform); } - bool entity_svc_factory(modules::ModuleService service, modules::Services& services) { + bool ECS::factory(modules::ModuleService service, modules::Services& services) { if ( service == EntityFactory::service) { auto* factory = services.create<EntityFactory>(); install_component_factories(factory); @@ -46,5 +46,4 @@ namespace fggl::entity { } return false; } - const modules::ServiceFactory ECS::factory = entity_svc_factory; } \ No newline at end of file diff --git a/fggl/gfx/ogl4/module.cpp b/fggl/gfx/ogl4/module.cpp index d0c2b33212c23a6118a6ea2c873cef5b8d3236c5..9bfe38cc869beb8d26197edd1dc66d4b1a71f558 100644 --- a/fggl/gfx/ogl4/module.cpp +++ b/fggl/gfx/ogl4/module.cpp @@ -83,7 +83,7 @@ namespace fggl::gfx { auto& light = manager.add<gfx::Light>(id); } - bool ogl4_factory(modules::ModuleService service, modules::Services& services) { + bool OpenGL4::factory(modules::ModuleService service, modules::Services& services) { if (service == WindowGraphics::service) { // setup the thing responsible for graphics auto* storage = services.get<data::Storage>(); @@ -100,6 +100,5 @@ namespace fggl::gfx { } return false; } - const modules::ServiceFactory OpenGL4::factory = ogl4_factory; } // namespace fggl::gfX::ogl4 \ No newline at end of file diff --git a/include/fggl/assets/module.hpp b/include/fggl/assets/module.hpp index a925f64969182d7186e20d3a2e0e5a3fce9517be..e3942f3a88f6c8ad391ce35de612fc7369eb0504 100644 --- a/include/fggl/assets/module.hpp +++ b/include/fggl/assets/module.hpp @@ -35,10 +35,11 @@ namespace fggl::assets { constexpr static const std::array<modules::ModuleService, 1> depends = { data::Storage::service }; - static const modules::ServiceFactory factory; + + static bool factory(modules::ModuleService name, modules::Services& serviceManager); }; - bool asset_factory(modules::ModuleService service, modules::Services& services) { + bool AssetFolders::factory(modules::ModuleService service, modules::Services& services) { if ( service == Loader::service) { auto storage = services.get<data::Storage>(); services.create<Loader>(storage); @@ -50,7 +51,6 @@ namespace fggl::assets { } return false; } - const modules::ServiceFactory AssetFolders::factory = asset_factory; } // namespace fggl::assets diff --git a/include/fggl/audio/openal/module.hpp b/include/fggl/audio/openal/module.hpp index dd37f67cc42421e7fe45b6776b1ed7b490a84240..0468fa64667a9ae8d09e9f2b1f23150265ae0aba 100644 --- a/include/fggl/audio/openal/module.hpp +++ b/include/fggl/audio/openal/module.hpp @@ -34,10 +34,10 @@ namespace fggl::audio { constexpr static const std::array<modules::ModuleService, 1> depends = { modules::make_service("fggl::data::Storage") }; - static const modules::ServiceFactory factory; + static bool factory(modules::ModuleService name, modules::Services& serviceManager); }; - bool openal_factory(modules::ModuleService service, modules::Services& services) { + bool OpenAL::factory(modules::ModuleService service, modules::Services& services) { if (service == SERVICE_AUDIO_PLAYBACK) { auto storage = services.get<data::Storage>(); services.bind<audio::AudioService, openal::AudioServiceOAL>(storage); @@ -45,7 +45,6 @@ namespace fggl::audio { } return false; } - const modules::ServiceFactory OpenAL::factory = openal_factory; } // namespace fggl::audio diff --git a/include/fggl/data/module.hpp b/include/fggl/data/module.hpp index 6628f7f9135e49ee472c1cf039c73c67dcdbabd3..97986b455b6c87278ef2bde96893d9862a2965b2 100644 --- a/include/fggl/data/module.hpp +++ b/include/fggl/data/module.hpp @@ -32,10 +32,11 @@ namespace fggl::data { SERVICE_STORAGE }; constexpr static const std::array<modules::ModuleService, 0> depends = {}; - static const modules::ServiceFactory factory; + + static bool factory(modules::ModuleService service, modules::Services& serviceManager); }; - bool storage_factory(modules::ModuleService service, modules::Services& data) { + bool LocalStorage::factory(modules::ModuleService service, modules::Services& data) { if (service == SERVICE_STORAGE) { // FIXME: no easy way to set the application name auto pathConfig = fggl::platform::calc_engine_paths("fggl-demo"); @@ -44,7 +45,6 @@ namespace fggl::data { } return false; } - const modules::ServiceFactory LocalStorage::factory = storage_factory; } // namespace fggl::data diff --git a/include/fggl/display/glfw/module.hpp b/include/fggl/display/glfw/module.hpp index e3df059e47537092737f7b4967f3406bbc7bd329..e4499dfc71d90685fdec72d6f85c570e21ed6b2e 100644 --- a/include/fggl/display/glfw/module.hpp +++ b/include/fggl/display/glfw/module.hpp @@ -36,10 +36,11 @@ namespace fggl::display { fggl::input::Input::service, fggl::gfx::WindowGraphics::service }; - static const modules::ServiceFactory factory; + + static bool factory(modules::ModuleService name, modules::Services& serviceManager); }; - bool glfw_factory(modules::ModuleService service, modules::Services& services) { + bool GLFW::factory(modules::ModuleService service, modules::Services& services) { if (service == WindowService::service) { auto input = services.get<input::Input>(); auto graphics = services.get<gfx::WindowGraphics>(); @@ -50,7 +51,6 @@ namespace fggl::display { } return false; } - const modules::ServiceFactory GLFW::factory = glfw_factory; } // namespace fggl::display diff --git a/include/fggl/entity/module.hpp b/include/fggl/entity/module.hpp index 0b70faaf3b59c3725f7136404f0604cb382891a0..b5d66d2b93e50c3efa62263fb0eb830f1cba4a4f 100644 --- a/include/fggl/entity/module.hpp +++ b/include/fggl/entity/module.hpp @@ -34,7 +34,7 @@ namespace fggl::entity { constexpr static const std::array<modules::ModuleService, 1> depends = { assets::Loader::service }; - static const modules::ServiceFactory factory; + static bool factory(modules::ModuleService name, modules::Services& serviceManager); }; void install_component_factories(EntityFactory* factory); diff --git a/include/fggl/gfx/ogl4/module.hpp b/include/fggl/gfx/ogl4/module.hpp index c9501b5fc6f705924dedcde027733fb16bfa2631..7bd50ca18f3f9e58499a8b3a7b14fe3a44f34dc4 100644 --- a/include/fggl/gfx/ogl4/module.hpp +++ b/include/fggl/gfx/ogl4/module.hpp @@ -41,7 +41,8 @@ namespace fggl::gfx { gui::FontLibrary::service, entity::EntityFactory::service }; - static const modules::ServiceFactory factory; + + static bool factory(modules::ModuleService name, modules::Services& serviceManager); }; } //namespace fggl::gfx diff --git a/include/fggl/gui/module.hpp b/include/fggl/gui/module.hpp index 6c926f20f1857221663ea843c1a5920fbc91ab75..4fb81270d46cb66816e0b16a9184fbd4c2e290b5 100644 --- a/include/fggl/gui/module.hpp +++ b/include/fggl/gui/module.hpp @@ -32,10 +32,10 @@ namespace fggl::gui { constexpr static const std::array<modules::ModuleService, 1> depends = { data::Storage::service }; - static const modules::ServiceFactory factory; + static bool factory(modules::ModuleService name, modules::Services& serviceManager); }; - bool freetype_factory(modules::ModuleService service, modules::Services& services) { + bool FreeType::factory(modules::ModuleService service, modules::Services& services) { if ( service == FontLibrary::service ) { auto storage = services.get<data::Storage>(); services.create< FontLibrary >(storage); @@ -43,7 +43,6 @@ namespace fggl::gui { } return false; } - const modules::ServiceFactory FreeType::factory = freetype_factory; } #endif //FGGL_GUI_MODULE_HPP diff --git a/include/fggl/input/module.hpp b/include/fggl/input/module.hpp index 125259fda0fc6e9a678f2f3ea1b0967cd0b7801b..a10b21650b1efddba266e7a6abc6e7155c7d902d 100644 --- a/include/fggl/input/module.hpp +++ b/include/fggl/input/module.hpp @@ -31,17 +31,16 @@ namespace fggl::input { SERVICE_INPUT }; constexpr static const std::array<modules::ModuleService, 0> depends = {}; - static const modules::ServiceFactory factory; + static bool factory(modules::ModuleService service, modules::Services& serviceManager); }; - bool input_factory(modules::ModuleService service, modules::Services& services) { + bool Generic::factory(modules::ModuleService service, modules::Services& services) { if (service == SERVICE_INPUT) { services.create<input::Input>(); return true; } return false; } - const modules::ServiceFactory Generic::factory = input_factory; } #endif //FGGL_INPUT_MODULE_HPP diff --git a/integrations/bullet/include/fggl/phys/bullet/module.hpp b/integrations/bullet/include/fggl/phys/bullet/module.hpp index 7ef91f68a215056e9ff6c55c664740d578f9bd15..695091900869ac2ba04d2227c59f116bc1928eeb 100644 --- a/integrations/bullet/include/fggl/phys/bullet/module.hpp +++ b/integrations/bullet/include/fggl/phys/bullet/module.hpp @@ -38,7 +38,8 @@ namespace fggl::phys::bullet { constexpr static const std::array<modules::ModuleService, 1> depends = { entity::EntityFactory::service }; - static const modules::ServiceFactory factory; + + static bool factory(modules::ModuleService name, modules::Services& serviceManager); }; } // namespace fggl::phys::bullet diff --git a/integrations/bullet/src/module.cpp b/integrations/bullet/src/module.cpp index da7d6d4c6caa77adec8bb391818bb039173cd883..7703f1d131603fef6202ca5fd8eff6f4af738a8b 100644 --- a/integrations/bullet/src/module.cpp +++ b/integrations/bullet/src/module.cpp @@ -83,13 +83,12 @@ namespace fggl::phys::bullet { // add the body to the simulation } - bool bullet_factory(modules::ModuleService service, modules::Services& services) { + bool Bullet::factory(modules::ModuleService service, modules::Services& services) { if ( service == BIND_BULLET ) { auto* entityFactory = services.get<entity::EntityFactory>(); entityFactory->bind(CONFIG_PHYS_BODY, add_bt_body); } return false; } - const modules::ServiceFactory Bullet::factory = bullet_factory; } // namespace fggl::phys::bullet \ No newline at end of file