2023-11-26 06:10:07 +00:00
# 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
2023-12-22 17:22:10 +00:00
- [x] Archetypes
2023-11-26 06:10:07 +00:00
- [x] Spawning entities
2023-11-27 02:05:35 +00:00
- [x] Despawning entities
- [x] Delete entities from archetypes
- [x] Find some way to fill in the gaps in component columns after entities are deleted
2023-11-28 03:24:29 +00:00
* This was done by moving the last entity in the column to the gap that was just removed.
2023-11-27 02:05:35 +00:00
- [x] Grow archetype as it fills up
2023-12-01 21:50:41 +00:00
- [x] Borrow safety of components inside Archetypes
- [x] Return `Ref` and `RefMut` from borrow queries
2023-12-22 17:22:10 +00:00
- [x] Querying components from archetypes
2023-11-26 06:10:07 +00:00
- [x] Views
2023-12-22 17:22:10 +00:00
- [x] Mutable views
2023-11-30 04:21:27 +00:00
- [x] Resources
2023-12-01 04:05:06 +00:00
- [x] Get resources in views somehow
2023-11-26 06:10:07 +00:00
- [ ] Relationships (maybe this can be done through queries, idk)
2023-12-22 17:22:10 +00:00
- [x] Dynamic queries
2023-11-26 06:10:07 +00:00
* Needed for scripting engines that can create their own components that Rust does not know the types of.
2023-12-22 17:22:10 +00:00
- [x] Systems
- [x] Dispatchers/Executors
- [x] Execution graph that follows dependencies
- [ ] Track when components on entities are changed