Mercurial > games > semicongine
comparison src/zamikongine/thing.nim @ 480:14e5151f68d1
did: introduce scene graph, meshs and generic vertex buffers
author | Sam <sam@basx.dev> |
---|---|
date | Mon, 09 Jan 2023 11:04:19 +0700 |
parents | |
children | b1b05d4efb52 |
comparison
equal
deleted
inserted
replaced
479:16842d15319a | 480:14e5151f68d1 |
---|---|
1 {.experimental: "codeReordering".} | |
2 | |
3 type | |
4 Part* = object of RootObj | |
5 thing: ref Thing | |
6 | |
7 Thing* = object of RootObj | |
8 parent*: ref Thing | |
9 children*: seq[ref Thing] | |
10 parts*: seq[ref Part] | |
11 | |
12 iterator partsOfType*[T: ref Part](root: ref Thing): T = | |
13 var queue = @[root] | |
14 while queue.len > 0: | |
15 let thing = queue.pop | |
16 for part in thing.parts: | |
17 if part of T: | |
18 yield T(part) | |
19 for child in thing.children: | |
20 queue.insert(child, 0) |