| 8 | void loadStringList(FILE* f, std::vector<std::string>& lines); |
| 9 | |
| 10 | int addNode(Scene& scene, int parent, int level) |
| 11 | { |
| 12 | int node = (int)scene.hierarchy_.size(); |
| 13 | { |
| 14 | // TODO: resize aux arrays (local/global etc.) |
| 15 | scene.localTransform_.push_back(glm::mat4(1.0f)); |
| 16 | scene.globalTransform_.push_back(glm::mat4(1.0f)); |
| 17 | } |
| 18 | scene.hierarchy_.push_back({ .parent_ = parent, .lastSibling_ = -1 }); |
| 19 | if (parent > -1) |
| 20 | { |
| 21 | // find first item (sibling) |
| 22 | int s = scene.hierarchy_[parent].firstChild_; |
| 23 | if (s == -1) |
| 24 | { |
| 25 | scene.hierarchy_[parent].firstChild_ = node; |
| 26 | scene.hierarchy_[node].lastSibling_ = node; |
| 27 | } else |
| 28 | { |
| 29 | int dest = scene.hierarchy_[s].lastSibling_; |
| 30 | if (dest <= -1) |
| 31 | { |
| 32 | // no cached lastSibling, iterate nextSibling indices |
| 33 | for (dest = s; scene.hierarchy_[dest].nextSibling_ != -1; dest = scene.hierarchy_[dest].nextSibling_); |
| 34 | } |
| 35 | scene.hierarchy_[dest].nextSibling_ = node; |
| 36 | scene.hierarchy_[s].lastSibling_ = node; |
| 37 | } |
| 38 | } |
| 39 | scene.hierarchy_[node].level_ = level; |
| 40 | scene.hierarchy_[node].nextSibling_ = -1; |
| 41 | scene.hierarchy_[node].firstChild_ = -1; |
| 42 | return node; |
| 43 | } |
| 44 | |
| 45 | void markAsChanged(Scene& scene, int node) |
| 46 | { |
no outgoing calls
no test coverage detected