lyra-engine/crates/lyra-ecs
SeanOMik 4816b7333e
CI / build (push) Failing after 2m53s Details
Make system_update_world_transforms also update world transforms for SceneGraphs
Before this couldn't be done since lyra-scene could not depend on lyra-resource, it would have caused a cyclic dependency. The last commit, where I created lyra-gltf from code inside lyra-resource, made this possible
2024-11-01 19:45:29 -04:00
..
lyra-ecs-derive move crates into 'crates' folder 2024-11-01 11:17:36 -04:00
src Make system_update_world_transforms also update world transforms for SceneGraphs 2024-11-01 19:45:29 -04:00
.gitignore move crates into 'crates' folder 2024-11-01 11:17:36 -04:00
Cargo.lock move crates into 'crates' folder 2024-11-01 11:17:36 -04:00
Cargo.toml move crates into 'crates' folder 2024-11-01 11:17:36 -04:00
LICENSE move crates into 'crates' folder 2024-11-01 11:17:36 -04:00
README.md move crates into 'crates' folder 2024-11-01 11:17:36 -04:00
shell.nix move crates into 'crates' folder 2024-11-01 11:17:36 -04:00

README.md

Lyra ECS

An ECS for the Lyra game engine.

Why does it exist?

I couldn't find anything that fulfilled my needs, specifically an ECS that can store arbitrary components without knowing about the types. This makes it easier to implement into a scripting engine that has the ability to create its own components.

Features

  • Archetypes
    • Spawning entities
    • Despawning entities
      • Delete entities from archetypes
      • Find some way to fill in the gaps in component columns after entities are deleted
        • This was done by moving the last entity in the column to the gap that was just removed.
    • Grow archetype as it fills up
    • Borrow safety of components inside Archetypes
      • Return Ref and RefMut from borrow queries
  • Querying components from archetypes
    • Views
    • Mutable views
  • Resources
  • Get resources in views somehow
  • Relationships (maybe this can be done through queries, idk)
  • Dynamic queries
    • Needed for scripting engines that can create their own components that Rust does not know the types of.
  • Systems
    • Dispatchers/Executors
      • Execution graph that follows dependencies
  • Track when components on entities are changed