Godex is a Godot Engine ECS library.

Godex

Godex logo

🐧 Linux Builds 🏁 Windows Builds

Godex is a Godot Engine ecs library.

Disclaimer: this module is still in development, open an issues to report any problem or a new discussion if you need any help. Any form of contribution is welcome.

The tested Godot version

Is master 2a9dd654bc0197dd864df61b5b37e302022c2871, please open an issue if the current master is not working or doesn't compile.

What is ECS

Shortened as ECS, the Entity Component System is an architectural design pattern that allow to organize the data in a way so that the workload can be split into small and easy programs.

Wiki

The wiki is available; useful links:

Examples

You can find some example projects here: GodotECS/godex-examples. The Unit tests are also a good resource to see how specific things works.

Community

If you want to chat about Godex, you can join the community on Discord.

Contributing

Open an issue to give a feedback, propose a new feature, or signal a bug is really welcome and will help this project grow! If you want to help with coding instead, those two links may turn useful:

Executable download

You can download Linux and Windows executable from GitHub Actions:

download-godex-binary

Owner
GodotECS
This organization is all about ECS in Godot.
GodotECS
Comments
  • Patch cannot be applied in a Windows build

    Patch cannot be applied in a Windows build

    When applying the patch in a windows build, the git throws errors that the patch does not apply: git apply modules/godex/patches/add_custom_iterator.patch error: patch failed: SConstruct:543 error: SConstruct: patch does not apply error: patch failed: core/config/engine.h:88 error: core/config/engine.h: patch does not apply error: patch failed: main/main.cpp:1284 error: main/main.cpp: patch does not apply error: patch failed: main/main.h:54 error: main/main.h: patch does not apply

    I think this might due to linespacing formatting issues between unix and windows systems. The following command successfully applied the patch with no errors: git apply --ignore-space-change --ignore-whitespace modules/godex/patches/add_custom_iterator.patch

    BUT will not allow it to build successfully:

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\iterators\../storage/storage.h(206): error C2663: 'MeshComponent::set': 2 overloads have no legal conversion for 'this' pointer

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\iterators\../storage/storage.h(201): note: while compiling class template member function 'void Storage<const C>::insert_dynamic(EntityID,const Dictionary &)' with [ C=MeshComponent ]

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems\../iterators/query.h(201): note: see reference to class template instantiation 'Storage<const C>' being compiled with [ C=MeshComponent ]

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems\../iterators/query.h(195): note: while compiling class template member function 'bool QueryStorage<const MeshComponent,const TransformComponent>::has_data(EntityID) const'

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems\../iterators/query.h(263): note: see reference to function template instantiation 'bool QueryStorage<const MeshComponent,const TransformComponent>::has_data(EntityID) const' being compiled

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems\../iterators/query.h(230): note: see reference to class template instantiation 'QueryStorage<const MeshComponent,const TransformComponent>' being compiled

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems/system_builder.h(87): note: see reference to class template instantiation 'Query<const MeshComponent,const TransformComponent>' being compiled

    C:\Users\Carlos\Documents\Godot\godot\modules\godex\systems\system_exe_funcs.gen.h(12): note: see reference to class template instantiation 'SystemBuilder::DataFetcher<P1>' being compiled with [ P1=Query<const MeshComponent,const TransformComponent> & ] modules\godex\register_types.cpp(113): note: see reference to function template instantiation 'void SystemBuilder::system_exec_func<RenderingServerDatabag*,Query<const MeshComponent,const TransformComponent>&>(World *,void (__cdecl *)(P0,P1))' being compiled with [ P0=RenderingServerDatabag *, P1=Query<const MeshComponent,const TransformComponent> & ]

    scons: *** [modules\godex\register_types.windows.tools.64.obj] Error 2

    scons: building terminated because of errors.

  • LLVM Compilation Error

    LLVM Compilation Error

    I am getting the following compilation error message:

    modules/godex/components/../systems/../iterators/query.h: In member function 'std::tuple<Batch<typename remove_filter::type>...> QueryStorage::get(EntityID, Space) const': modules/godex/components/../systems/../iterators/query.h:39:103: error: cannot deduce template arguments for 'tuple' from () std::tuple<Batch<remove_filter_t>...> get(EntityID p_id, Space p_mode) const { return std::tuple(); } ^ scons: *** [modules/godex/components/child.linuxbsd.tools.64.o] Error 1 scons: building terminated because of errors.

    I am using latest stable Godot and Godex versions and compiling as described in the wiki.

    Any idea to fix it? Thanks.

  • Godex does not compile with float=64

    Godex does not compile with float=64

    It's a new master branch feature. error given:

    godex\modules\bullet_physics\overlap_check.cpp(27): error C2664: 'void btConvexShape::project(const btTransform &,const btVector3 &,btScalar &,btScalar &,btVector3 &,btVector3 &) const': cannot convert argument 3 from 'real_t' to 'btScalar &'
    godot\thirdparty\bullet\BulletCollision\CollisionShapes\btConvexShape.h(53): note: see declaration of 'btConvexShape::project'
    godex\modules\bullet_physics\overlap_check.cpp(758): error C2259: 'overlap_check_polyhedron_polyhedron::NoRes': cannot instantiate abstract class
    godex\modules\bullet_physics\overlap_check.cpp(754): note: see declaration of 'overlap_check_polyhedron_polyhedron::NoRes'
    godex\modules\bullet_physics\overlap_check.cpp(758): note: due to following members:
    godex\modules\bullet_physics\overlap_check.cpp(758): note: 'void btDiscreteCollisionDetectorInterface::Result::addContactPoint(const btVector3 &,const btVector3 &,btScalar)': is abstract
    godot\thirdparty\bullet\BulletCollision\NarrowPhaseCollision\btDiscreteCollisionDetectorInterface.h(36): note: see declaration of 'btDiscreteCollisionDetectorInterface::Result::addContactPoint'
    systems_base.cpp
    
  • In-editor UX enhancements for systems and resources

    In-editor UX enhancements for systems and resources

    I'm proposing three features:

    1. A way to remove specific resources added to a world.
    2. A way to remove specific systems added to a pipeline.
    3. A way to rearrange systems in a pipeline (new to Godex, but I'm assuming the system order is strictly enforced, hence the indexing).

    @AndreaCatania, would you prefer a PR, or would you rather implement these yourself? Please let me know if I'm missing something.

  • Renames to get up to speed with master 1acc76f

    Renames to get up to speed with master 1acc76f

    Rename Transform to Transform3D Rename transform.h to transform_3d.h Rename .instance() to .instantiate() Rename set_translation( to set_position( Rename Reference to RefCounted Rename Variant::QUAT to Variant::QUATERNION Rename Variant::TRANSFORM to Variant::TRANSFORM3D

  • Crashes when running test project

    Crashes when running test project

    Running test project https://github.com/qarmin/RegressionTestProject/archive/refs/heads/4.0.zip crashes with this backtraces(I use Godot with address sanitizer)

    WorldECS.get_entity_component_by_name
    Parameters [100, ]
    ERROR: The passed component_name is not valid.
       at: has_entity_component (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:516)
    /mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:502:86: runtime error: member access within null pointer of type 'struct StorageBase'
    handle_crash: Program crashed with signal 11
    Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
    [1] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s() [0x2045552] (/mnt/Miecz/godot/platform/linuxbsd/crash_handler_linuxbsd.cpp:54)
    [2] /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7f7d6e067210] (??:0)
    [3] WorldECS::get_entity_component(unsigned int, unsigned int) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:502)
    [4] WorldECS::get_entity_component_by_name(unsigned int, StringName const&) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:493 (discriminator 2))
    [5] void call_with_variant_args_ret_helper<__UnexistingClass, Object*, unsigned int, StringName const&, 0ul, 1ul>(__UnexistingClass*, Object* (__UnexistingClass::*)(unsigned int, StringName const&), Variant const**, Variant&, Callable::CallError&, IndexSequence<0ul, 1ul>) (/mnt/Miecz/godot/./core/variant/binder_common.h:603 (discriminator 6))
    [6] void call_with_variant_args_ret_dv<__UnexistingClass, Object*, unsigned int, StringName const&>(__UnexistingClass*, Object* (__UnexistingClass::*)(unsigned int, StringName const&), Variant const**, int, Variant&, Callable::CallError&, Vector<Variant> const&) (/mnt/Miecz/godot/./core/variant/binder_common.h:389)
    [7] MethodBindTR<Object*, unsigned int, StringName const&>::call(Object*, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/./core/object/method_bind.h:452)
    [8] Object::call(StringName const&, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/core/object/object.cpp:784 (discriminator 1))
    [9] Object::callv(StringName const&, Array const&) (/mnt/Miecz/godot/core/object/object.cpp:709 (discriminator 1))
    [10] void call_with_variant_args_ret_helper<__UnexistingClass, Variant, StringName const&, Array const&, 0ul, 1ul>(__UnexistingClass*, Variant (__UnexistingClass::*)(StringName const&, Array const&), Variant const**, Variant&, Callable::CallError&, IndexSequence<0ul, 1ul>) (/mnt/Miecz/godot/./core/variant/binder_common.h:603 (discriminator 8))
    [11] void call_with_variant_args_ret_dv<__UnexistingClass, Variant, StringName const&, Array const&>(__UnexistingClass*, Variant (__UnexistingClass::*)(StringName const&, Array const&), Variant const**, int, Variant&, Callable::CallError&, Vector<Variant> const&) (/mnt/Miecz/godot/./core/variant/binder_common.h:389)
    [12] MethodBindTR<Variant, StringName const&, Array const&>::call(Object*, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/./core/object/method_bind.h:452)
    [13] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) (/mnt/Miecz/godot/modules/gdscript/gdscript_vm.cpp:1496 (discriminator 1))
    [14] GDScriptInstance::call(StringName const&, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/./modules/gdscript/gdscript.cpp:1552)
    [15] Object::call(StringName const&, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/core/object/object.cpp:765 (discriminator 1))
    [16] Variant::call(StringName const&, Variant const**, int, Variant&, Callable::CallError&) (/mnt/Miecz/godot/core/variant/variant_call.cpp:713)
    [17] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) (/mnt/Miecz/godot/modules/gdscript/gdscript_vm.cpp:1394)
    [18] GDScriptInstance::call(StringName const&, Variant const**, int, Callable::CallError&) (/mnt/Miecz/godot/./modules/gdscript/gdscript.cpp:1552)
    [19] ScriptInstance::call(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/mnt/Miecz/godot/core/object/script_language.cpp:311)
    [20] Node::_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:147)
    [21] Node::_notificationv(int, bool) (/mnt/Miecz/godot/./scene/main/node.h:45 (discriminator 14))
    [22] Object::notification(int, bool) (/mnt/Miecz/godot/core/object/object.cpp:795)
    [23] Node::_propagate_ready() (/mnt/Miecz/godot/scene/main/node.cpp:189)
    [24] Node::_propagate_ready() (/mnt/Miecz/godot/scene/main/node.cpp:179 (discriminator 2))
    [25] Node::_set_tree(SceneTree*) (/mnt/Miecz/godot/scene/main/node.cpp:2525)
    [26] SceneTree::initialize() (/mnt/Miecz/godot/scene/main/scene_tree.cpp:395)
    [27] OS_LinuxBSD::run() (/mnt/Miecz/godot/platform/linuxbsd/os_linuxbsd.cpp:256)
    [28] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s(main+0x3fc) [0x2043032] (/mnt/Miecz/godot/platform/linuxbsd/godot_linuxbsd.cpp:60)
    [29] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7f7d6e0480b3] (??:0)
    [30] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s(_start+0x2e) [0x2042b7e] (??:?)
    

    There is also memory leak

    Direct leak of 24 byte(s) in 1 object(s) allocated from:
        #0 0x7ff340b29f17 in operator new(unsigned long) (/lib/x86_64-linux-gnu/libasan.so.6+0xb1f17)
        #1 0x3ca43d9 in void WorldCommands::add_method<WorldCommands, EntityID>(StringName const&, void (WorldCommands::*)(EntityID)) /mnt/Miecz/modules/godex/world/world.h:59
        #2 0x3c9b1b5 in WorldCommands::_bind_methods() /mnt/Miecz/modules/godex/world/world.cpp:23
        #3 0x3ce7f0f in void ECS::register_databag<WorldCommands>() /mnt/Miecz/modules/godex/components/../ecs.h:430
        #4 0x3cdfb44 in register_godex_types() /mnt/Miecz/modules/godex/register_types.cpp:30
        #5 0x2e60ff3 in register_module_types() modules/register_module_types.gen.cpp:483
        #6 0x218cf52 in Main::setup2(unsigned long) main/main.cpp:1764
        #7 0x218030e in Main::setup(char const*, int, char**, bool) main/main.cpp:1387
        #8 0x2042f36 in main platform/linuxbsd/godot_linuxbsd.cpp:51
        #9 0x7ff33fc430b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    
    Direct leak of 24 byte(s) in 1 object(s) allocated from:
        #0 0x7ff340b29f17 in operator new(unsigned long) (/lib/x86_64-linux-gnu/libasan.so.6+0xb1f17)
        #1 0x3ca3d5b in void WorldCommands::add_method<EntityID, WorldCommands>(StringName const&, EntityID (WorldCommands::*)()) /mnt/Miecz/modules/godex/world/world.h:59
        #2 0x3c9b10e in WorldCommands::_bind_methods() /mnt/Miecz/modules/godex/world/world.cpp:22
        #3 0x3ce7f0f in void ECS::register_databag<WorldCommands>() /mnt/Miecz/modules/godex/components/../ecs.h:430
        #4 0x3cdfb44 in register_godex_types() /mnt/Miecz/modules/godex/register_types.cpp:30
        #5 0x2e60ff3 in register_module_types() modules/register_module_types.gen.cpp:483
        #6 0x218cf52 in Main::setup2(unsigned long) main/main.cpp:1764
        #7 0x218030e in Main::setup(char const*, int, char**, bool) main/main.cpp:1387
        #8 0x2042f36 in main platform/linuxbsd/godot_linuxbsd.cpp:51
        #9 0x7ff33fc430b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    
    Changed scene to res://ReparentingDeleting/ReparentingDeleting.tscn
    DisplayServer::_create_window 3 want rect: 0, 0, 100, 100 got rect 0, 0, 100, 100
    ERROR: Only one WorldECS is allowed at a time.
       at: active_world (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:441)
    ERROR: Condition "!data.grouped.has(p_identifier)" is true.
       at: remove_from_group (scene/main/node.cpp:1746)
    ERROR: Condition "!data.tree" is true. Returning: nullptr
       at: get_tree (./scene/main/node.h:280)
    /mnt/Miecz/modules/godex/ecs.cpp:425:42: runtime error: member call on null pointer of type 'struct SceneTree'
    /mnt/Miecz/modules/godex/ecs.cpp:425:42: runtime error: member access within null pointer of type 'struct SceneTree'
    handle_crash: Program crashed with signal 11
    Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
    [1] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s() [0x2045552] (/mnt/Miecz/godot/platform/linuxbsd/crash_handler_linuxbsd.cpp:54)
    [2] /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7f2226302210] (??:0)
    [3] ECS::set_active_world(World*, WorldECS*) (/mnt/Miecz/modules/godex/ecs.cpp:425)
    [4] WorldECS::active_world() (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:429 (discriminator 1))
    [5] WorldECS::_notification(int) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:294)
    [6] WorldECS::_notificationv(int, bool) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.h:78 (discriminator 14))
    [7] Object::notification(int, bool) (/mnt/Miecz/godot/core/object/object.cpp:795)
    [8] Node::propagate_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:1849)
    [9] Node::propagate_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:1849 (discriminator 2))
    [10] Node::propagate_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:1849 (discriminator 2))
    [11] Node::propagate_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:1849 (discriminator 2))
    [12] ECS::set_active_world(World*, WorldECS*) (/mnt/Miecz/modules/godex/ecs.cpp:432)
    [13] WorldECS::unactive_world() (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:451)
    [14] WorldECS::_notification(int) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.cpp:299)
    [15] WorldECS::_notificationv(int, bool) (/mnt/Miecz/modules/godex/modules/godot/nodes/ecs_world.h:78 (discriminator 14))
    [16] Object::notification(int, bool) (/mnt/Miecz/godot/core/object/object.cpp:795)
    [17] Node::_propagate_exit_tree() (/mnt/Miecz/godot/scene/main/node.cpp:270)
    [18] Node::_propagate_exit_tree() (/mnt/Miecz/godot/scene/main/node.cpp:258 (discriminator 2))
    [19] Node::_set_tree(SceneTree*) (/mnt/Miecz/godot/scene/main/node.cpp:2514)
    [20] Node::remove_child(Node*) (/mnt/Miecz/godot/scene/main/node.cpp:1318)
    [21] Node::_notification(int) (/mnt/Miecz/godot/scene/main/node.cpp:166)
    [22] Node::_notificationv(int, bool) (/mnt/Miecz/godot/./scene/main/node.h:45 (discriminator 14))
    [23] Object::notification(int, bool) (/mnt/Miecz/godot/core/object/object.cpp:795)
    [24] Object::_predelete() (/mnt/Miecz/godot/core/object/object.cpp:355)
    [25] predelete_handler(Object*) (/mnt/Miecz/godot/core/object/object.cpp:1815)
    [26] void memdelete<Object>(Object*) (/mnt/Miecz/godot/./core/os/memory.h:111)
    [27] SceneTree::_flush_delete_queue() (/mnt/Miecz/godot/scene/main/scene_tree.cpp:996)
    [28] SceneTree::process(float) (/mnt/Miecz/godot/scene/main/scene_tree.cpp:456 (discriminator 5))
    [29] Main::iteration() (/mnt/Miecz/godot/main/main.cpp:2505 (discriminator 2))
    [30] OS_LinuxBSD::run() (/mnt/Miecz/godot/platform/linuxbsd/os_linuxbsd.cpp:261)
    [31] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s(main+0x3fc) [0x2043032] (/mnt/Miecz/godot/platform/linuxbsd/godot_linuxbsd.cpp:60)
    [32] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7f22262e30b3] (??:0)
    [33] /mnt/Miecz/godot/bin/godot.linuxbsd.tools.64s(_start+0x2e) [0x2042b7e] (??:?)
    
  • Godex does not compile with the latest Godot master

    Godex does not compile with the latest Godot master

    I am on this commit of Godot: https://github.com/godotengine/godot/commit/0e77dc6e924cdf68175f56cb67756bf217e6c4ea

    I am on Windows and this is the command I ran:

    scons -j8 p=windows tools=yes target=release_debug

    Here are the errors I get:

    PS F:\godot> scons -j8 p=windows tools=yes target=release_debug
    scons: Reading SConscript files ...
    Configuring for Windows: target=release_debug, bits=default
    Found MSVC version 14.2, arch amd64, bits=64
    YASM is necessary for WebM SIMD optimizations.
    WebM SIMD optimizations are disabled. Check if your CPU architecture, CPU bits or platform are supported!
    Checking for C header file mntent.h... (cached) no
    scons: done reading SConscript files.
    scons: Building targets ...
    [  2%] Compiling ==> platform\windows\os_windows.cpp
    [  3%] os_windows.cpp
    [  3%] rc /DDEBUG_ENABLED /DWINDOWS_SUBSYSTEM_CONSOLE /DWINDOWS_ENABLED /DWASAPI_ENABLED /DWINMIDI_ENABLED /DTYPED_METHOD_BIND /DWIN32 /DMSVC /DWINVER=0x0601 /D_WIN32_WINNT=0x0601 /DNOMINMAX /D_WIN64 /DVULKAN_ENABLED /DCUSTOM_ITERATOR /DCUSTOM_PHYSICS_ITERATOR /DTOOLS_ENABLED /DMINIZIP_ENABLED /DZSTD_STATIC_LINKING_ONLY /Ithirdparty\freetype\include /Ithirdparty\libpng /Ithirdparty\vulkan /Ithirdparty\vulkan\include /Ithirdparty\vulkan\loader /Ithirdparty\zstd /Ithirdparty\zlib /Iplatform\windows /I. /nologo /foplatform\windows\godot_res.windows.opt.tools.64.obj platform\windows\godot_res.rc
    [  3%] Generating enabled modules header.
    [ 15%] Compiling ==> thirdparty\miniupnpc\miniupnpc\miniwget.c
    [ 15%] Compiling ==> thirdparty\miniupnpc\miniupnpc\minisoap.c
    [ 15%] miniwget.c
    [ 16%] minisoap.c
    [ 40%] Compiling ==> modules\godex\register_types.cpp
    [ 40%] register_types.cpp
    [ 40%] Compiling ==> modules\godex\godot\editor_plugins\components_gizmo_3d.cpp
    [ 40%] Compiling ==> modules\godex\godot\editor_plugins\editor_world_ecs.cpp
    components_gizmo_3d.cpp
    [ 40%] Compiling ==> modules\upnp\upnp_device.cpp
    editor_world_ecs.cpp
    [ 40%] Compiling ==> modules\upnp\upnp.cpp
    [ 40%] Compiling ==> modules\upnp\register_types.cpp
    upnp_device.cpp
    [ 40%] upnp.cpp
    Compiling ==> main\main.cpp
    register_types.cpp
    main.cpp
    [ 40%] Compiling ==> modules\text_server_adv\text_server_adv.cpp
    text_server_adv.cpp
    [ 40%] Compiling ==> modules\register_module_types.gen.cpp
    register_module_types.gen.cpp
    [ 40%] Linking Static Library ==> modules\modules.windows.opt.tools.64.lib
    [ 40%] Compiling ==> modules\text_server_adv\dynamic_font_adv.cpp
    dynamic_font_adv.cpp
    [ 40%] Compiling ==> modules\godex\godot\editor_plugins\entity_editor_plugin.cpp
    entity_editor_plugin.cpp
    [ 40%] Linking Static Library ==> modules\module_upnp.windows.opt.tools.64.lib
    [ 40%] Compiling ==> modules\godex\godot\nodes\ecs_world.cpp
    F:\godot\modules\godex\godot\editor_plugins\editor_world_ecs.h(169): error C3668: 'EditorWorldECS::_changed_callback': method with override specifier 'override' did not override any base class methods
    ecs_world.cpp
    modules\godex\godot\editor_plugins\editor_world_ecs.cpp(694): error C2039: 'remove_change_receptor': is not a member of 'WorldECS'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/ecs_world.h(79): note: see declaration of 'WorldECS'
    modules\godex\godot\editor_plugins\editor_world_ecs.cpp(707): error C2039: 'add_change_receptor': is not a member of 'WorldECS'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/ecs_world.h(79): note: see declaration of 'WorldECS'
    modules\godex\godot\editor_plugins\editor_world_ecs.cpp(719): error C2039: 'remove_change_receptor': is not a member of 'PipelineECS'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/ecs_world.h(18): note: see declaration of 'PipelineECS'
    modules\godex\godot\editor_plugins\editor_world_ecs.cpp(725): error C2039: 'add_change_receptor': is not a member of 'PipelineECS'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/ecs_world.h(18): note: see declaration of 'PipelineECS'
    modules\godex\godot\editor_plugins\editor_world_ecs.cpp(1094): error C2039: '_change_notify': is not a member of 'WorldECS'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/ecs_world.h(79): note: see declaration of 'WorldECS'
    scons: *** [modules\godex\godot\editor_plugins\editor_world_ecs.windows.opt.tools.64.obj] Error 2
    F:\godot\modules\godex\godot/editor_plugins/editor_world_ecs.h(169): error C3668: 'EditorWorldECS::_changed_callback': method with override specifier 'override' did not override any base class methods
    F:\godot\modules\godex\godot/editor_plugins/entity_editor_plugin.h(42): error C3668: 'EntityEditor::_changed_callback': method with override specifier 'override' did not override any base class methods
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(745): error C2039: '_change_notify': is not a member of 'Entity3D'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(94): note: see declaration of 'Entity3D'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(744): note: while compiling class template member function 'void EntityInternal<Entity3D>::update_components_data(void)'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(202): note: see reference to function template instantiation 'void EntityInternal<Entity3D>::update_components_data(void)' being compiled
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(98): note: see reference to class template instantiation 'EntityInternal<Entity3D>' being compiled
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(745): error C2039: '_change_notify': is not a member of 'Entity2D'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(221): note: see declaration of 'Entity2D'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(744): note: while compiling class template member function 'void EntityInternal<Entity2D>::update_components_data(void)'
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(293): note: see reference to function template instantiation 'void EntityInternal<Entity2D>::update_components_data(void)' being compiled
    F:\godot\modules\godex\godot\editor_plugins\../nodes/entity.h(225): note: see reference to class template instantiation 'EntityInternal<Entity2D>' being compiled
    scons: *** [modules\godex\register_types.windows.opt.tools.64.obj] Error 2
    scons: *** [modules\godex\godot\editor_plugins\components_gizmo_3d.windows.opt.tools.64.obj] Error 2
    modules\godex\godot\nodes\ecs_world.cpp(40): error C3861: '_change_notify': identifier not found
    modules\godex\godot\nodes\ecs_world.cpp(49): error C3861: '_change_notify': identifier not found
    modules\godex\godot\nodes\ecs_world.cpp(69): error C3861: '_change_notify': identifier not found
    modules\godex\godot\nodes\ecs_world.cpp(74): error C3861: '_change_notify': identifier not found
    modules\godex\godot\nodes\ecs_world.cpp(354): error C3861: '_change_notify': identifier not found
    modules\godex\godot\nodes\ecs_world.cpp(359): error C3861: '_change_notify': identifier not found
    scons: *** [modules\godex\godot\nodes\ecs_world.windows.opt.tools.64.obj] Error 2
    F:\godot\modules\godex\godot\editor_plugins\entity_editor_plugin.h(42): error C3668: 'EntityEditor::_changed_callback': method with override specifier 'override' did not override any base class methods
    scons: *** [modules\godex\godot\editor_plugins\entity_editor_plugin.windows.opt.tools.64.obj] Error 2
    scons: building terminated because of errors.
    

    Here is a project that you should be able to clone/get submodules (for godex)

    https://github.com/sean-clayton/godot

  • Ref #292 - Attempt to fix editor UI

    Ref #292 - Attempt to fix editor UI

    When I use godex, I encounter the first problem described in ticket https://github.com/GodotECS/godex/issues/292.

    No ECS tab in editor from the latest master

    I could see that this was due to the fact that, in the method initialize_godot_module, the singleton EditorNode was at nullptr.

    I made some quick changes, observing what was done in other godot modules. Now, the menu described in the doc, here, appear. But, this one is different.

    Does the documentation correspond to a particular version of godex ?

    I'm new to module development for godot, and although the menu appears, sometimes the module seems to be flaky.

  • Change PROPERTY_USAGE_NOEDITOR to PROPERTY_USAGE_NO_EDITOR

    Change PROPERTY_USAGE_NOEDITOR to PROPERTY_USAGE_NO_EDITOR

    PROPERTY_USAGE_NOEDITOR has been recently renamed to PROPERTY_USAGE_NO_EDITOR on master, for consistency with other constants.

    See: https://github.com/godotengine/godot/commit/c012fbc8b235b86ed70c501834825d91292f8811

  • Using Godot api in ECS systems

    Using Godot api in ECS systems

    Problem

    It is not clear how we can get the Godot api to work in the ECS context. As an example, using Godot physics api to detect collisions or make physics simulation in a ECS system. I can see there is a Shape3dComponent but It is not clear how it can be used to access the Godot physics api which relies on kinematic, static bodies and other classes. The same applies for other classes and features. Maybe it is about documentation.

    Proposal

    As an idea, I don't know how feasible it is to get Godot scenes registered as components to have the full Godot api available in ECS systems. While adding complex scenes as components is not what ECS is about it could integrate Godot in the ECS paradigm.

  • Linux build errors

    Linux build errors

    Impressive work, thanks for sharing it. I wanted to try it out before finding out that my card is probably too old, I create this issue only FYI, close it when you want.

    I tried to build master first then the branch mentioned in the wiki Setup page, without the godex module and without the patch I can build and run both, if I add the module and apply the patch I have errors with both:

    Debian/sid gcc-10

    branch master:

    [ 33%] Compiling ==> modules/godex/main.cpp
    [ 33%] Compiling ==> modules/godex/register_types.cpp
    In file included from modules/godex/register_types.cpp:17:
    modules/godex/godot/editor_plugins/editor_world_ecs.h:137:7: error: 'void EditorWorldECS::_changed_callback(Object*, const char*)' marked 'override', but does not override
      137 |  void _changed_callback(Object *p_changed, const char *p_prop) override;
          |       ^~~~~~~~~~~~~~~~~
    In file included from modules/godex/register_types.cpp:18:
    modules/godex/godot/editor_plugins/entity_editor_plugin.h:42:15: error: 'virtual void EntityEditor::_changed_callback(Object*, const char*)' marked 'override', but does not override
       42 |  virtual void _changed_callback(Object *p_changed, const char *p_prop) override;
          |               ^~~~~~~~~~~~~~~~~
    In file included from modules/godex/godot/editor_plugins/components_gizmo_3d.h:3,
                     from modules/godex/register_types.cpp:16:
    modules/godex/godot/editor_plugins/../nodes/entity.h: In instantiation of 'void EntityInternal<C>::update_components_data() [with C = Entity3D]':
    modules/godex/godot/editor_plugins/../nodes/entity.h:202:33:   required from here
    modules/godex/godot/editor_plugins/../nodes/entity.h:745:9: error: 'class Entity3D' has no member named '_change_notify'
      745 |  owner->_change_notify("components_data");
          |  ~~~~~~~^~~~~~~~~~~~~~
    modules/godex/godot/editor_plugins/../nodes/entity.h: In instantiation of 'void EntityInternal<C>::update_components_data() [with C = Entity2D]':
    modules/godex/godot/editor_plugins/../nodes/entity.h:293:33:   required from here
    modules/godex/godot/editor_plugins/../nodes/entity.h:745:9: error: 'class Entity2D' has no member named '_change_notify'
    scons: *** [modules/godex/register_types.linuxbsd.tools.64.o] Error 1
    scons: building terminated because of errors.
    

    detached branch over 36c943260ed40c6e31a6ecff7f6e1674714b4fcb:

    [ 30%] Linking Static Library ==> modules/libmodule_gridmap.linuxbsd.tools.64.a
    Ranlib Library         ==> modules/libmodule_gridmap.linuxbsd.tools.64.a
    [ 30%] Compiling ==> modules/godex/components/child.cpp
    In file included from modules/godex/components/../systems/../iterators/query.h:5,
                     from modules/godex/components/../systems/system_builder.h:7,
                     from modules/godex/components/../ecs.h:11,
                     from modules/godex/components/component.h:5,
                     from modules/godex/components/child.h:3,
                     from modules/godex/components/child.cpp:1:
    modules/godex/components/../systems/../iterators/../storage/storage.h: In member function 'void ChangeList::notify_updated(EntityID)':
    modules/godex/components/../systems/../iterators/../storage/storage.h:50:14: error: 'class LocalVector<EntityID>' has no member named 'remove_unordered'
       50 |      changed.remove_unordered(index);
          |              ^~~~~~~~~~~~~~~~
    modules/godex/components/../systems/../iterators/../storage/storage.h:55:13: error: 'class LocalVector<EntityID>' has no member named 'remove_unordered'
       55 |     changed.remove_unordered(index);
          |             ^~~~~~~~~~~~~~~~
    scons: *** [modules/godex/components/child.linuxbsd.tools.64.o] Error 1
    scons: building terminated because of errors.
    
  • Compile fails on m1 mac due to numerous errors

    Compile fails on m1 mac due to numerous errors

    I'm trying to compile godex / godot on an m1 mac following the setup wiki and have been getting stuck due to compile errors.

    I'm working off the godot commit 35cfaafda8073f700c9d2fe42a43d3d81eaaea67

    My command line is: scons platform=macos target=release_debug arch=arm64 custom_modules="../godex" vulkan_sdk_path="~/VulkanSDK/1.3.236.0/"

    I initially ran into issues with the bullet_physics module so I commented it out which got me further into compilation but now I'm getting stuck at:

    [Initial build] clang++ -o /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.macos.opt.tools.arm64.o -c -std=gnu++17 -Wctor-dtor-privacy -Wnon-virtual-dtor -Wno-error=#warnings -g2 -O2 -arch arm64 -mmacosx-version-min=11.0 -fobjc-arc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -Wno-deprecated-declarations -Wall -Wextra -Wwrite-strings -Wno-unused-parameter -Wno-ordered-compare-function-pointers -Wimplicit-fallthrough -Werror -DDEBUG_ENABLED -DNO_EDITOR_SPLASH -DMACOS_ENABLED -DUNIX_ENABLED -DAPPLE_STYLE_KEYS -DCOREAUDIO_ENABLED -DCOREMIDI_ENABLED -DGLES_ENABLED -DGLES3_ENABLED -DVULKAN_ENABLED -DCUSTOM_ITERATOR -DCUSTOM_PHYSICS_ITERATOR -DTOOLS_ENABLED -DMINIZIP_ENABLED -DZSTD_STATIC_LINKING_ONLY -DVK_USE_PLATFORM_MACOS_MVK -DGLAD_ENABLED -DGLES_OVER_GL -Ithirdparty/libpng -Ithirdparty/glad -Ithirdparty/vulkan -Ithirdparty/vulkan/include -Ithirdparty/zstd -Ithirdparty/zlib -Iplatform/macos -I. -I/Users/threepwave/code/godex -I/Users/threepwave/code /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.cpp
    scons: building terminated because of errors.
    

    Full error log below:

    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.h:4:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/hierarchical_storage.h:29:7: error: 'configure' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            void configure(const Dictionary &p_config) {
                 ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:27:15: note: overridden virtual function is here
            virtual void configure(const Dictionary &p_config) {}
                         ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.h:4:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/hierarchical_storage.h:159:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.h:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/../../../components/component.h:3:
    In file included from /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs.h:7:
    In file included from /Users/threepwave/code/godex/systems/../spawners/../systems/system.h:6:
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs_types.h:82:2: error: definition of implicit copy assignment operator for 'EntityID' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            EntityID(const EntityID &) = default;
            ^
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/hierarchical_storage.h:117:17: note: in implicit copy assignment operator for 'EntityID' first required here
                            child.parent = p_data.parent;
                                         ^
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/hierarchical_storage.h:290:7: error: 'configure' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            void configure(const Dictionary &p_config) {
                 ^
    /Users/threepwave/code/godex/modules/godot/components/transform_component.h:8:32: note: in instantiation of template class 'HierarchicalStorage<TransformComponent>' requested here
            COMPONENT(TransformComponent, HierarchicalStorage)
                                          ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:27:15: note: overridden virtual function is here
            virtual void configure(const Dictionary &p_config) {}
                         ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.h:4:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/hierarchical_storage.h:348:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.cpp:1:
    /Users/threepwave/code/godex/modules/godot/components/transform_component.h:8:12: error: definition of implicit copy assignment operator for 'TransformComponent' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            COMPONENT(TransformComponent, HierarchicalStorage)
                      ^
    /Users/threepwave/code/godex/modules/godot/components/transform_component.cpp:24:8: note: in implicit copy assignment operator for 'TransformComponent' first required here
            *this = p_transf;
                  ^
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.h:4:
    In file included from /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.h:4:
    /Users/threepwave/code/godex/modules/godot/components/physics/../../../../storage/dense_vector_storage.h:55/Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/modules/godot/components/disabled.h:8:22: note: in instantiation of template class 'DenseVectorStorage<Disabled>' requested here
            COMPONENT(Disabled, DenseVectorStorage)
                                ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    :25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.h:8:30: note: in instantiation of template class 'DenseVectorStorage<Shape3DComponent>' requested here
            COMPONENT(Shape3DComponent, DenseVectorStorage)
                                        ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.h:4:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.h:8:44: note: in instantiation of template class 'DenseVectorStorage<InterpolatedTransformComponent>' requested here
            COMPONENT(InterpolatedTransformComponent, DenseVectorStorage)
                                                      ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    6 errors generated.
    scons: *** [/Users/threepwave/code/godex/modules/godot/components/transform_component.macos.opt.tools.arm64.o] Error 1
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.h:4:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/modules/godot/components/disabled.h:8:22: note: in instantiation of template class 'DenseVectorStorage<Disabled>' requested here
            COMPONENT(Disabled, DenseVectorStorage)
                                ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.cpp:1:
    /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.h:8:12: error: definition of implicit copy assignment operator for 'Shape3DComponent' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            COMPONENT(Shape3DComponent, DenseVectorStorage)
                      ^
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/dense_vector.h:53:35: note: in implicit copy assignment operator for 'Shape3DComponent' first required here
                            data[entity_to_data[p_entity]] = data[last];
                                                           ^
    /Users/threepwave/code/godex/modules/godot/components/physics/../../../../storage/dense_vector_storage.h:45:11: note: in instantiation of member function 'DenseVector<Shape3DComponent>::remove' requested here
                    storage.remove(p_entity);
                            ^
    /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.h:8:30: note: in instantiation of member function 'DenseVectorStorage<Shape3DComponent>::remove' requested here
            COMPONENT(Shape3DComponent, DenseVectorStorage)
                                        ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.h:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/physics/../../../../components/component.h:3:
    In file included from /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs.h:7:
    In file included from /Users/threepwave/code/godex/systems/../spawners/../systems/system.h:6:
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs_types.h:82:2: error: definition of implicit copy assignment operator for 'EntityID' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            EntityID(const EntityID &) = default;
            ^
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/dense_vector.h:59:45: note: in implicit copy assignment operator for 'EntityID' first required here
                            data_to_entity[entity_to_data[p_entity]] = data_to_entity[last];
                                                                     ^
    /Users/threepwave/code/godex/modules/godot/components/physics/../../../../storage/dense_vector_storage.h:45:11: note: in instantiation of member function 'DenseVector<Shape3DComponent>::remove' requested here
                    storage.remove(p_entity);
                            ^
    /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.h:8:30: note: in instantiation of member function 'DenseVectorStorage<Shape3DComponent>::remove' requested here
            COMPONENT(Shape3DComponent, DenseVectorStorage)
                                        ^
    3 errors generated.
    scons: *** [/Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.macos.opt.tools.arm64.o] Error 1
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.cpp:1:
    /Users/threepwave/code/godex/modules/godot/components/disabled.h:8:12: error: definition of implicit copy assignment operator for 'Disabled' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            COMPONENT(Disabled, DenseVectorStorage)
                      ^
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/dense_vector.h:53:35: note: in implicit copy assignment operator for 'Disabled' first required here
                            data[entity_to_data[p_entity]] = data[last];
                                                           ^
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:45:11: note: in instantiation of member function 'DenseVector<Disabled>::remove' requested here
                    storage.remove(p_entity);
                            ^
    /Users/threepwave/code/godex/modules/godot/components/disabled.h:8:22: note: in instantiation of member function 'DenseVectorStorage<Disabled>::remove' requested here
            COMPONENT(Disabled, DenseVectorStorage)
                                ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.h:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/../../../components/component.h:3:
    In file included from /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs.h:7:
    In file included from /Users/threepwave/code/godex/systems/../spawners/../systems/system.h:6:
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs_types.h:82:2: error: definition of implicit copy assignment operator for 'EntityID' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            EntityID(const EntityID &) = default;
            ^
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/dense_vector.h:59:45: note: in implicit copy assignment operator for 'EntityID' first required here
                            data_to_entity[entity_to_data[p_entity]] = data_to_entity[last];
                                                                     ^
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:45:11: note: in instantiation of member function 'DenseVector<Disabled>::remove' requested here
                    storage.remove(p_entity);
                            ^
    /Users/threepwave/code/godex/modules/godot/components/disabled.h:8:22: note: in instantiation of member function 'DenseVectorStorage<Disabled>::remove' requested here
            COMPONENT(Disabled, DenseVectorStorage)
                                ^
    3 errors generated.
    scons: *** [/Users/threepwave/code/godex/modules/godot/components/disabled.macos.opt.tools.arm64.o] Error 1
    In file included from /Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.h:4:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.h:8:44: note: in instantiation of template class 'DenseVectorStorage<InterpolatedTransformComponent>' requested here
            COMPONENT(InterpolatedTransformComponent, DenseVectorStorage)
                                                      ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.cpp:1:
    /Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.h:8:12: error: definition of implicit copy assignment operator for 'InterpolatedTransformComponent' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            COMPONENT(InterpolatedTransformComponent, DenseVectorStorage)
                      ^
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/dense_vector.h:53:35: note: in implicit copy assignment operator for 'InterpolatedTransformComponent' first required here
                            data[entity_to_data[p_entity]] = data[last];
                                                           ^
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:45:11: note: in instantiation of member function 'DenseVector<InterpolatedTransformComponent>::remove' requested here
                    storage.remove(p_entity);
                            ^
    /Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.h:8:44: note: in instantiation of member function 'DenseVectorStorage<InterpolatedTransformComponent>::remove' requested here
            COMPONENT(InterpolatedTransformComponent, DenseVectorStorage)
                                                      ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.h:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/../../../components/component.h:3:
    In file included from /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs.h:7:
    In file included from /Users/threepwave/code/godex/systems/../spawners/../systems/system.h:6:
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs_types.h:82:2: error: definition of implicit copy assignment operator for 'EntityID' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            EntityID(const EntityID &) = default;
            ^
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/dense_vector.h:59:45: note: in implicit copy assignment operator for 'EntityID' first required here
                            data_to_entity[entity_to_data[p_entity]] = data_to_entity[last];
                                                                     ^
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:45:11: note: in instantiation of member function 'DenseVector<InterpolatedTransformComponent>::remove' requested here
                    storage.remove(p_entity);
                            ^
    /Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.h:8:44: note: in instantiation of member function 'DenseVectorStorage<InterpolatedTransformComponent>::remove' requested here
            COMPONENT(InterpolatedTransformComponent, DenseVectorStorage)
                                                      ^
    3 errors generated.
    scons: *** [/Users/threepwave/code/godex/modules/godot/components/interpolated_transform_component.macos.opt.tools.arm64.o] Error 1
    In file included from /Users/threepwave/code/godex/modules/godot/components/mesh_component.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/mesh_component.h:5:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/modules/godot/components/mesh_component.h:9:27: note: in instantiation of template class 'DenseVectorStorage<MeshComponent>' requested here
            COMPONENT(MeshComponent, DenseVectorStorage)
                                     ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.h:4:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/modules/godot/components/mesh_component.h:9:27: note: in instantiation of template class 'DenseVectorStorage<MeshComponent>' requested here
            COMPONENT(MeshComponent, DenseVectorStorage)
                                     ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.h:4:
    /Users/threepwave/code/godex/modules/godot/components/physics/../../../../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/modules/godot/components/physics/shape_3d_component.h:8:30: note: in instantiation of template class 'DenseVectorStorage<Shape3DComponent>' requested here
            COMPONENT(Shape3DComponent, DenseVectorStorage)
                                        ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:7:
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.h:4:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/hierarchical_storage.h:29:7: error: 'configure' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            void configure(const Dictionary &p_config) {
                 ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:27:15: note: overridden virtual function is here
            virtual void configure(const Dictionary &p_config) {}
                         ^
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:7:
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.h:4:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/hierarchical_storage.h:159:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.h:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/physics/../../../../components/component.h:3:
    In file included from /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs.h:7:
    In file included from /Users/threepwave/code/godex/systems/../spawners/../systems/system.h:6:
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs_types.h:82:2: error: definition of implicit copy assignment operator for 'EntityID' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            EntityID(const EntityID &) = default;
            ^
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/hierarchical_storage.h:117:17: note: in implicit copy assignment operator for 'EntityID' first required here
                            child.parent = p_data.parent;
                                         ^
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/hierarchical_storage.h:290:7: error: 'configure' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            void configure(const Dictionary &p_config) {
                 ^
    /Users/threepwave/code/godex/modules/godot/components/transform_component.h:8:32: note: in instantiation of template class 'HierarchicalStorage<TransformComponent>' requested here
            COMPONENT(TransformComponent, HierarchicalStorage)
                                          ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:27:15: note: overridden virtual function is here
            virtual void configure(const Dictionary &p_config) {}
                         ^
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:7:
    In file included from /Users/threepwave/code/godex/modules/godot/components/transform_component.h:4:
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/hierarchical_storage.h:348:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/mesh_component.cpp:1:
    /Users/threepwave/code/godex/modules/godot/components/mesh_component.h:9:12: error: definition of implicit copy assignment operator for 'MeshComponent' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            COMPONENT(MeshComponent, DenseVectorStorage)
                      ^
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/dense_vector.h:53:35: note: in implicit copy assignment operator for 'MeshComponent' first required here
                            data[entity_to_data[p_entity]] = data[last];
                                                           ^
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:45:11: note: in instantiation of member function 'DenseVector<MeshComponent>::remove' requested here
                    storage.remove(p_entity);
                            ^
    /Users/threepwave/code/godex/modules/godot/components/mesh_component.h:9:27: note: in instantiation of member function 'DenseVectorStorage<MeshComponent>::remove' requested here
            COMPONENT(MeshComponent, DenseVectorStorage)
                                     ^
    In file included from /Users/threepwave/code/godex/modules/godot/components/mesh_component.cpp:1:
    In file included from /Users/threepwave/code/godex/modules/godot/components/mesh_component.h:4:
    In file included from /Users/threepwave/code/godex/modules/godot/components/../../../components/component.h:3:
    In file included from /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs.h:7:
    In file included from /Users/threepwave/code/godex/systems/../spawners/../systems/system.h:6:
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs_types.h:82:2: error: definition of implicit copy assignment operator for 'EntityID' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            EntityID(const EntityID &) = default;
            ^
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/dense_vector.h:59:45: note: in implicit copy assignment operator for 'EntityID' first required here
                            data_to_entity[entity_to_data[p_entity]] = data_to_entity[last];
                                                                     ^
    /Users/threepwave/code/godex/modules/godot/components/../../../storage/dense_vector_storage.h:45:11: note: in instantiation of member function 'DenseVector<MeshComponent>::remove' requested here
                    storage.remove(p_entity);
                            ^
    /Users/threepwave/code/godex/modules/godot/components/mesh_component.h:9:27: note: in instantiation of member function 'DenseVectorStorage<MeshComponent>::remove' requested here
            COMPONENT(MeshComponent, DenseVectorStorage)
                                     ^
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:14:
    In file included from /Users/threepwave/code/godex/modules/godot/editor_plugins/components_mesh_gizmo_3d.h:3:
    In file included from /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/entity.h:5:
    In file included from /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/ecs_world.h:4:
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../utils/fetchers.h:145:15: error: 'get_system_info' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual void get_system_info(SystemExeInfo *r_info) const;
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../utils/../ecs_types.h:475:15: note: overridden virtual function is here
            virtual void get_system_info(SystemExeInfo *r_info) const = 0;
                         ^
    3 errors generated.
    scons: *** [/Users/threepwave/code/godex/modules/godot/components/mesh_component.macos.opt.tools.arm64.o] Error 1
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:14:
    In file included from /Users/threepwave/code/godex/modules/godot/editor_plugins/components_mesh_gizmo_3d.h:3:
    In file included from /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/entity.h:9:
    In file included from /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/script_ecs.h:7:
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/ecs_utilities.h:157:15: error: '_get_property_list' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual void _get_property_list(List<PropertyInfo> *r_list) const;
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/ecs_utilities.h:138:15: note: overridden virtual function is here
            virtual void _get_property_list(List<PropertyInfo> *r_list) const = 0;
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/ecs_utilities.h:170:15: error: '_get_property_list' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual void _get_property_list(List<PropertyInfo> *r_list) const;
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/ecs_utilities.h:138:15: note: overridden virtual function is here
            virtual void _get_property_list(List<PropertyInfo> *r_list) const = 0;
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/ecs_utilities.h:183:15: error: '_get_property_list' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual void _get_property_list(List<PropertyInfo> *r_list) const;
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/ecs_utilities.h:138:15: note: overridden virtual function is here
            virtual void _get_property_list(List<PropertyInfo> *r_list) const = 0;
                         ^
    In file included from /Users/threepwave/code/godex/modules/godot/register_types.cpp:3:
    In file included from /Users/threepwave/code/godex/modules/godot/components/disabled.h:3:
    In file included from /Users/threepwave/code/godex/systems/../iterators/../components/component.h:3:
    In file included from /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:8:
    In file included from /Users/threepwave/code/godex/systems/system_builder.h:4:
    In file included from /Users/threepwave/code/godex/systems/../iterators/events_emitter_receiver.h:4:
    In file included from /Users/threepwave/code/godex/systems/../spawners/../world/world.h:6:
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:293:15: error: 'SharedStorage<Child>::insert' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
            virtual void insert(EntityID, const T &) override final {
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:593:7: note: in instantiation of template class 'SharedStorage<Child>' requested here
                    if (dynamic_cast<SharedStorage<C> *>(s) != nullptr) {
                        ^
    /Users/threepwave/code/godex/modules/godot/register_types.cpp:52:8: note: in instantiation of function template specialization 'ECS::register_component<Child>' requested here
                    ECS::register_component<Child>([]() -> StorageBase * { return new Hierarchy; });
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:249:15: note: hidden overloaded virtual function 'SharedStorageBase::insert' declared here: type mismatch at 2nd parameter ('godex::SID' (aka 'unsigned int') vs 'const Child &')
            virtual void insert(EntityID p_entity, godex::SID p_id) {
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:293:15: error: 'SharedStorage<Disabled>::insert' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
            virtual void insert(EntityID, const T &) override final {
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:593:7: note: in instantiation of template class 'SharedStorage<Disabled>' requested here
                    if (dynamic_cast<SharedStorage<C> *>(s) != nullptr) {
                        ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:580:2: note: in instantiation of function template specialization 'ECS::register_component<Disabled>' requested here
            register_component<C>(C::create_storage_no_type);
            ^
    /Users/threepwave/code/godex/modules/godot/register_types.cpp:53:8: note: in instantiation of function template specialization 'ECS::register_component<Disabled>' requested here
                    ECS::register_component<Disabled>();
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:249:15: note: hidden overloaded virtual function 'SharedStorageBase::insert' declared here: type mismatch at 2nd parameter ('godex::SID' (aka 'unsigned int') vs 'const Disabled &')
            virtual void insert(EntityID p_entity, godex::SID p_id) {
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:293:15: error: 'SharedStorage<MeshComponent>::insert' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
            virtual void insert(EntityID, const T &) override final {
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:593:7: note: in instantiation of template class 'SharedStorage<MeshComponent>' requested here
                    if (dynamic_cast<SharedStorage<C> *>(s) != nullptr) {
                        ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:580:2: note: in instantiation of function template specialization 'ECS::register_component<MeshComponent>' requested here
            register_component<C>(C::create_storage_no_type);
            ^
    /Users/threepwave/code/godex/modules/godot/register_types.cpp:54:8: note: in instantiation of function template specialization 'ECS::register_component<MeshComponent>' requested here
                    ECS::register_component<MeshComponent>();
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:249:15: note: hidden overloaded virtual function 'SharedStorageBase::insert' declared here: type mismatch at 2nd parameter ('godex::SID' (aka 'unsigned int') vs 'const MeshComponent &')
            virtual void insert(EntityID p_entity, godex::SID p_id) {
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:293:15: error: 'SharedStorage<TransformComponent>::insert' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
            virtual void insert(EntityID, const T &) override final {
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:593:7: note: in instantiation of template class 'SharedStorage<TransformComponent>' requested here
                    if (dynamic_cast<SharedStorage<C> *>(s) != nullptr) {
                        ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:580:2: note: in instantiation of function template specialization 'ECS::register_component<TransformComponent>' requested here
            register_component<C>(C::create_storage_no_type);
            ^
    /Users/threepwave/code/godex/modules/godot/register_types.cpp:55:8: note: in instantiation of function template specialization 'ECS::register_component<TransformComponent>' requested here
                    ECS::register_component<TransformComponent>();
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:249:15: note: hidden overloaded virtual function 'SharedStorageBase::insert' declared here: type mismatch at 2nd parameter ('godex::SID' (aka 'unsigned int') vs 'const TransformComponent &')
            virtual void insert(EntityID p_entity, godex::SID p_id) {
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:293:15: error: 'SharedStorage<InterpolatedTransformComponent>::insert' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
            virtual void insert(EntityID, const T &) override final {
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:593:7: note: in instantiation of template class 'SharedStorage<InterpolatedTransformComponent>' requested here
                    if (dynamic_cast<SharedStorage<C> *>(s) != nullptr) {
                        ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:580:2: note: in instantiation of function template specialization 'ECS::register_component<InterpolatedTransformComponent>' requested here
            register_component<C>(C::create_storage_no_type);
            ^
    /Users/threepwave/code/godex/modules/godot/register_types.cpp:56:8: note: in instantiation of function template specialization 'ECS::register_component<InterpolatedTransformComponent>' requested here
                    ECS::register_component<InterpolatedTransformComponent>();
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:249:15: note: hidden overloaded virtual function 'SharedStorageBase::insert' declared here: type mismatch at 2nd parameter ('godex::SID' (aka 'unsigned int') vs 'const InterpolatedTransformComponent &')
            virtual void insert(EntityID p_entity, godex::SID p_id) {
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:293:15: error: 'SharedStorage<Shape3DComponent>::insert' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
            virtual void insert(EntityID, const T &) override final {
                         ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:593:7: note: in instantiation of template class 'SharedStorage<Shape3DComponent>' requested here
                    if (dynamic_cast<SharedStorage<C> *>(s) != nullptr) {
                        ^
    /Users/threepwave/code/godex/modules/godot/editor_plugins/../nodes/../../../ecs.h:580:2: note: in instantiation of function template specialization 'ECS::register_component<Shape3DComponent>' requested here
            register_component<C>(C::create_storage_no_type);
            ^
    /Users/threepwave/code/godex/modules/godot/register_types.cpp:57:8: note: in instantiation of function template specialization 'ECS::register_component<Shape3DComponent>' requested here
                    ECS::register_component<Shape3DComponent>();
                         ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:249:15: note: hidden overloaded virtual function 'SharedStorageBase::insert' declared here: type mismatch at 2nd parameter ('godex::SID' (aka 'unsigned int') vs 'const Shape3DComponent &')
            virtual void insert(EntityID p_entity, godex::SID p_id) {
                         ^
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    20 errors generated.
    scons: *** [/Users/threepwave/code/godex/modules/godot/register_types.macos.opt.tools.arm64.o] Error 1
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:7:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:5:
    /Users/threepwave/code/godex/tests/../modules/godot/components/../../../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:9:27: note: in instantiation of template class 'DenseVectorStorage<MeshComponent>' requested here
            COMPONENT(MeshComponent, DenseVectorStorage)
                                     ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:8:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/transform_component.h:4:
    /Users/threepwave/code/godex/tests/../modules/godot/components/../../../storage/hierarchical_storage.h:29:7: error: 'configure' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            void configure(const Dictionary &p_config) {
                 ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:27:15: note: overridden virtual function is here
            virtual void configure(const Dictionary &p_config) {}
                         ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:8:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/transform_component.h:4:
    /Users/threepwave/code/godex/tests/../modules/godot/components/../../../storage/hierarchical_storage.h:159:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:6:
    In file included from /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs.h:7:
    In file included from /Users/threepwave/code/godex/systems/../spawners/../systems/system.h:6:
    /Users/threepwave/code/godex/systems/../iterators/../world/../storage/../ecs_types.h:82:2: error: definition of implicit copy assignment operator for 'EntityID' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
            EntityID(const EntityID &) = default;
            ^
    /Users/threepwave/code/godex/tests/../modules/godot/components/../../../storage/hierarchical_storage.h:117:17: note: in implicit copy assignment operator for 'EntityID' first required here
                            child.parent = p_data.parent;
                                         ^
    /Users/threepwave/code/godex/tests/../modules/godot/components/../../../storage/hierarchical_storage.h:290:7: error: 'configure' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            void configure(const Dictionary &p_config) {
                 ^
    /Users/threepwave/code/godex/tests/../modules/godot/components/transform_component.h:8:32: note: in instantiation of template class 'HierarchicalStorage<TransformComponent>' requested here
            COMPONENT(TransformComponent, HierarchicalStorage)
                                          ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:27:15: note: overridden virtual function is here
            virtual void configure(const Dictionary &p_config) {}
                         ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:8:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/transform_component.h:4:
    /Users/threepwave/code/godex/tests/../modules/godot/components/../../../storage/hierarchical_storage.h:348:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:7:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:5:
    /Users/threepwave/code/godex/tests/../modules/godot/components/../../../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/tests/test_ecs_component.h:25:40: note: in instantiation of template class 'DenseVectorStorage<TestDynamicSetGetComponent>' requested here
            COMPONENT(TestDynamicSetGetComponent, DenseVectorStorage);
                                                  ^
    /Users/threepwave/code/godex/systems/../spawners/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:5:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_pipeline.h:12:
    In file included from /Users/threepwave/code/godex/tests/../systems/dynamic_system.h:3:
    In file included from /Users/threepwave/code/godex/systems/../iterators/dynamic_query.h:4:
    /Users/threepwave/code/godex/systems/../iterators/../utils/fetchers.h:145:15: error: 'get_system_info' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual void get_system_info(SystemExeInfo *r_info) const;
                         ^
    /Users/threepwave/code/godex/systems/../iterators/../utils/../ecs_types.h:475:15: note: overridden virtual function is here
            virtual void get_system_info(SystemExeInfo *r_info) const = 0;
                         ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:6:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_pipeline_builder.h:10:
    /Users/threepwave/code/godex/tests/../modules/godot/nodes/ecs_utilities.h:157:15: error: '_get_property_list' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual void _get_property_list(List<PropertyInfo> *r_list) const;
                         ^
    /Users/threepwave/code/godex/tests/../modules/godot/nodes/ecs_utilities.h:138:15: note: overridden virtual function is here
            virtual void _get_property_list(List<PropertyInfo> *r_list) const = 0;
                         ^
    /Users/threepwave/code/godex/tests/../modules/godot/nodes/ecs_utilities.h:170:15: error: '_get_property_list' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual void _get_property_list(List<PropertyInfo> *r_list) const;
                         ^
    /Users/threepwave/code/godex/tests/../modules/godot/nodes/ecs_utilities.h:138:15: note: overridden virtual function is here
            virtual void _get_property_list(List<PropertyInfo> *r_list) const = 0;
                         ^
    /Users/threepwave/code/godex/tests/../modules/godot/nodes/ecs_utilities.h:183:15: error: '_get_property_list' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual void _get_property_list(List<PropertyInfo> *r_list) const;
                         ^
    /Users/threepwave/code/godex/tests/../modules/godot/nodes/ecs_utilities.h:138:15: note: overridden virtual function is here
            virtual void _get_property_list(List<PropertyInfo> *r_list) const = 0;
                         ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:7:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:5:
    /Users/threepwave/code/godex/tests/../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/tests/test_ecs_pipeline_builder.h:42:26: note: in instantiation of template class 'DenseVectorStorage<PbComponentA>' requested here
            COMPONENT(PbComponentA, DenseVectorStorage)
                                    ^
    /Users/threepwave/code/godex/tests/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:7:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:5:
    /Users/threepwave/code/godex/tests/../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/tests/test_ecs_pipeline_builder.h:46:26: note: in instantiation of template class 'DenseVectorStorage<PbComponentB>' requested here
            COMPONENT(PbComponentB, DenseVectorStorage)
                                    ^
    /Users/threepwave/code/godex/tests/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:7:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:5:
    /Users/threepwave/code/godex/tests/../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/tests/test_ecs_query.h:15:35: note: in instantiation of template class 'DenseVectorStorage<TagQueryTestComponent>' requested here
            COMPONENT(TagQueryTestComponent, DenseVectorStorage)
                                             ^
    /Users/threepwave/code/godex/tests/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:7:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:5:
    /Users/threepwave/code/godex/tests/../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/tests/test_ecs_query.h:20:18: note: in instantiation of template class 'DenseVectorStorage<TagA>' requested here
            COMPONENT(TagA, DenseVectorStorage)
                            ^
    /Users/threepwave/code/godex/tests/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:7:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:5:
    /Users/threepwave/code/godex/tests/../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/tests/test_ecs_query.h:24:18: note: in instantiation of template class 'DenseVectorStorage<TagB>' requested here
            COMPONENT(TagB, DenseVectorStorage)
                            ^
    /Users/threepwave/code/godex/tests/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:7:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:5:
    /Users/threepwave/code/godex/tests/../storage/dense_vector_storage.h:55:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/tests/test_ecs_query.h:28:18: note: in instantiation of template class 'DenseVectorStorage<TagC>' requested here
            COMPONENT(TagC, DenseVectorStorage)
                            ^
    /Users/threepwave/code/godex/tests/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:7:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:4:
    In file included from /Users/threepwave/code/godex/tests/../components/component.h:4:
    /Users/threepwave/code/godex/tests/../storage/batch_storage.h:63:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/tests/test_ecs_query.h:32:2: note: in instantiation of template class 'BatchStorage<DenseVector, 2, TestFixedSizeEvent>' requested here
            COMPONENT_BATCH(TestFixedSizeEvent, DenseVector, 2)
            ^
    /Users/threepwave/code/godex/tests/../components/component.h:72:14: note: expanded from macro 'COMPONENT_BATCH'
                    return new BatchStorage<m_storage_class, m_batch, m_class>;                           \
                               ^
    /Users/threepwave/code/godex/tests/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    In file included from tests/test_main.cpp:98:
    In file included from ./modules/modules_tests.gen.h:1:
    In file included from /Users/threepwave/code/godex/tests/test_ecs_base.h:7:
    In file included from /Users/threepwave/code/godex/tests/../modules/godot/components/mesh_component.h:4:
    In file included from /Users/threepwave/code/godex/tests/../components/component.h:4:
    /Users/threepwave/code/godex/tests/../storage/batch_storage.h:122:25: error: 'get_stored_entities' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    /Users/threepwave/code/godex/tests/test_ecs_query.h:42:2: note: in instantiation of template class 'BatchStorage<DenseVector, -1, TestEvent>' requested here
            COMPONENT_BATCH(TestEvent, DenseVector, -1) // -1 make the storage dynamic.
            ^
    /Users/threepwave/code/godex/tests/../components/component.h:72:14: note: expanded from macro 'COMPONENT_BATCH'
                    return new BatchStorage<m_storage_class, m_batch, m_class>;                           \
                               ^
    /Users/threepwave/code/godex/tests/../storage/storage.h:72:25: note: overridden virtual function is here
            virtual EntitiesBuffer get_stored_entities() const {
                                   ^
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    20 errors generated.
    scons: *** [tests/test_main.macos.opt.tools.arm64.o] Error 1
    
  • Update compatibility for 4.0 beta3

    Update compatibility for 4.0 beta3

    This makes godex compile with commit 35cfaafda8073f700c9d2fe42a43d3d81eaaea67, which is the one that was used to build the beta 3 of Godot 4.0.

    I am not 100% if the function I wrote to replace remove_and_skip is working correctly. I did some quick tests and it looks okay, but maybe someone with a deeper knowledge of godex should double check.

  • GodotECS not compiling against Godot master branch

    GodotECS not compiling against Godot master branch

    I followed the install instructions from the setup page, but ran into an error when attempting to compile. I am attaching the output from my cmd window.

    Compile Tool Versions: Visual Studio Community 2022 (17.3.3) Python 3.10.7 Scons 4.4.0

    Feel free to reach out if you have further questions. GodexCompileError_20220906.txt

  • Fixing GodotCPP Compile due to Godex issues

    Fixing GodotCPP Compile due to Godex issues

    Hello again,

    I am looking to create a game with support of a Godot GDExtension/Addon in combination with Godex. And in order to do that with a modified engine (the addition of Godex in this case), you need to update the GodotCPP Headers. Update GodotCPP Header

    I followed the instructions and updating the headers went fine. However, when compiling GodotCPP there were some Godex issues making it fail. I have attached some fixes for that in the PR. (Windows MSVC with debug configuration using; Godot Commit: godotengine/godot@11abffb)

    There are some things were I am a little unsure of, so let me know what you think. :)

    1. In the Godot source, I haven't seen 'BIND_ENUM_CONSTANT' used multiple times for the same enum but for different classes, however, looking at the generated output and the define, I don't think that could be a problem.
    2. Last thing, I noticed that the 'PHASE_FINALIZE_PROCESS' flag for the 'Phase' enum wasn't being exposed to GDScript for classes 'System' and 'ECS'. Is that on purpose or perhaps forgotten?
  • build error: `error: 'as_const' is not a member of 'std'`

    build error: `error: 'as_const' is not a member of 'std'`

    Getting this error when building godot with godex.

    godotECS/godex/modules/godot/nodes/ecs_world.cpp:744:65: error: 'as_const' is not a member of 'std'; did you mean 'is_const'? 744 | const Storage *storage = std::as_const(world)->get_storage();

  • Editor UI for godex not working

    Editor UI for godex not working

    • No ECS tab in editor from the latest master from previous version:
    • Unable to add systems or change their order in "Pipeline view"
    • Unable to find any custom system in "Add system" window, opened by the button "Use feature"
    • No input reaction for buttons "New component" and "Add variable" in "Component and Databag manager" window, opened by the "Use feature" button
    • Unable to find any custom component in the "Component and Databag manager" window
Feb 7, 2022
Go Client Library for Amazon Product Advertising API

go-amazon-product-advertising-api Go Client Library for Amazon Product Advertising API How to Use go get -u github.com/ngs/go-amazon-product-advertisi

Sep 27, 2022
A Go client library for the Twitter 1.1 API

Anaconda Anaconda is a simple, transparent Go package for accessing version 1.1 of the Twitter API. Successful API queries return native Go structs th

Jan 1, 2023
Go library for http://www.brewerydb.com/ API

brewerydb brewerydb is a Go library for accessing the BreweryDB API usage import "github.com/naegelejd/brewerydb" Construct a new Client using your Br

Sep 27, 2022
Go(lang) client library for Cachet (open source status page system).

cachet Go(lang) client library for Cachet (open source status page system). Features Full API support Components Incidents Metrics Subscribers Various

Sep 27, 2022
Go library for interacting with CircleCI

go-circleci Go library for interacting with CircleCI's API. Supports all current API endpoints allowing you do do things like: Query for recent builds

Nov 26, 2022
Clarifai library for Go

Clarifai Golang Library Library for our v1 API. Disclaimer This API client only supports Clarifai v1 API. Stay tuned for the v2 support. Usage go get

Sep 27, 2022
Go library for accessing the Codeship API v2

Codeship API v2 Client for Go Codeship API v2 client for Go. Documentation https://godoc.org/github.com/codeship/codeship-go Usage go get -u github.co

Sep 27, 2022
Go client library for interacting with Coinpaprika's API

Coinpaprika API Go Client Usage This library provides convenient way to use coinpaprika.com API in Go. Coinpaprika delivers full market data to the wo

Dec 8, 2022
Go library to access geocoding and reverse geocoding APIs

GeoService in Go Code Coverage A geocoding service developed in Go's way, idiomatic and elegant, not just in golang. This product is designed to open

Dec 23, 2022
Go library for accessing the GitHub API

go-github go-github is a Go client library for accessing the GitHub API v3. Currently, go-github requires Go version 1.9 or greater. go-github tracks

Dec 30, 2022
Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://developer.github.com/v4/).

githubv4 Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://docs.github.com/en/graphql). If you're looking for a client

Dec 26, 2022
Go library to use the imgur.com API

go-imgur Go library to use the imgur.com API. At the moment only the anonymous part of the API is supported, but that is used in a production environm

Sep 27, 2022
Go client library for Atlassian Jira
Go client library for Atlassian Jira

go-jira Go client library for Atlassian Jira. Features Authentication (HTTP Basic, OAuth, Session Cookie) Create and retrieve issues Create and retrie

Jan 6, 2023
A GO API library for working with Marathon

Go-Marathon Go-marathon is a API library for working with Marathon. It currently supports Application and group deployment Helper filters for pulling

Dec 28, 2022
Go library for accessing the MyAnimeList API: http://myanimelist.net/modules.php?go=api

go-myanimelist go-myanimelist is a Go client library for accessing the MyAnimeList API. Project Status The MyAnimeList API has been stable for years a

Sep 28, 2022
Go library for accessing trending repositories and developers at Github.
Go library for accessing trending repositories and developers at Github.

go-trending A package to retrieve trending repositories and developers from Github written in golang. This package were inspired by rochefort/git-tren

Dec 21, 2022
a Go (Golang) MusicBrainz WS2 client library - work in progress
a Go (Golang) MusicBrainz WS2 client library - work in progress

gomusicbrainz a Go (Golang) MusicBrainz WS2 client library - a work in progress. Current state Currently GoMusicBrainz provides methods to perform sea

Sep 28, 2022
GoStorm is a Go library that implements the communications protocol required to write Storm spouts and Bolts in Go that communicate with the Storm shells.

gostorm godocs GoStorm is a Go library that implements the communications protocol required for non-Java languages to communicate as part of a storm t

Sep 27, 2022