From 48000b7a04f5c4aecbe89ac77fe433bd17b5eda1 Mon Sep 17 00:00:00 2001 From: Joseph Walton-Rivers <joseph@walton-rivers.uk> Date: Mon, 1 Aug 2022 10:52:27 +0100 Subject: [PATCH] more conventional factory defintions --- demo/data/rollball.yml | 50 +++++++++---------- demo/demo/main.cpp | 1 + fggl/entity/module.cpp | 3 +- fggl/gfx/ogl4/module.cpp | 3 +- include/fggl/assets/module.hpp | 6 +-- include/fggl/audio/openal/module.hpp | 5 +- include/fggl/data/module.hpp | 6 +-- include/fggl/display/glfw/module.hpp | 6 +-- include/fggl/entity/module.hpp | 2 +- include/fggl/gfx/ogl4/module.hpp | 3 +- include/fggl/gui/module.hpp | 5 +- include/fggl/input/module.hpp | 5 +- .../include/fggl/phys/bullet/module.hpp | 3 +- integrations/bullet/src/module.cpp | 3 +- 14 files changed, 49 insertions(+), 52 deletions(-) diff --git a/demo/data/rollball.yml b/demo/data/rollball.yml index 61598f8..df682f1 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 24106bb..6e20bfc 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 4037902..ee6b1c0 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 d0c2b33..9bfe38c 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 a925f64..e3942f3 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 dd37f67..0468fa6 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 6628f7f..97986b4 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 e3df059..e4499df 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 0b70faa..b5d66d2 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 c9501b5..7bd50ca 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 6c926f2..4fb8127 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 125259f..a10b216 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 7ef91f6..6950919 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 da7d6d4..7703f1d 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 -- GitLab