finish basic storage query

This commit is contained in:
wooshings
2026-10-07 11:16:18 -07:00
parent f7c830dcb8
commit 87345e7248
2 changed files with 10 additions and 12 deletions
+2 -3
View File
@@ -11,8 +11,7 @@ App :: struct {
update_systems: [dynamic]proc(),
draw_systems: [dynamic]proc(),
plugins: [dynamic]proc(app: ^App),
entities: map[u32][dynamic]struct{},
storages: map[typeid]rawptr,
entities: [dynamic]Entity,
}
add_system :: proc(app: ^App, schedule: int, system: proc()) {
@@ -30,7 +29,7 @@ add_plugin :: proc(app: ^App, plugin: proc(app: ^App)) {
append(&app.plugins, plugin)
}
run :: proc(app: ^App) {
run :: proc(app: ^App, entity_limit: int = 1000) {
rl.InitWindow(800, 600, "shoal window")
defer rl.CloseWindow()
+8 -9
View File
@@ -1,21 +1,20 @@
package shoal
import "core:fmt"
Entity :: distinct u32
Storage :: struct($T: typeid) {
data: map[Entity]T,
}
spawn_entity :: proc(app: ^App, $T: typeid) -> Entity {
entity: Entity
spawn_entity :: proc(app: ^App) -> Entity {
entity_num := len(&app.entities)
entity: Entity = Entity(entity_num)
append(&app.entities, entity)
return entity
}
add_collection :: proc(app: ^App, $T: typeid) {
storage: ^Storage(T)
app.storages[T] = storage
}
query :: proc(app: ^App, $T: typeid) {
add_component :: proc(app: ^App, entity: Entity, storage: ^Storage($T)) {
storage.data[entity] = T{}
}