MCPcopy Create free account
hub / github.com/PacktPublishing/3D-Graphics-Rendering-Cookbook / addNode

Function addNode

shared/scene/Scene.cpp:10–43  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8void loadStringList(FILE* f, std::vector<std::string>& lines);
9
10int 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
45void markAsChanged(Scene& scene, int node)
46{

Callers 3

traverseFunction · 0.85
generateDataFunction · 0.85
mergeSceneFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected