98 } |
98 } |
99 |
99 |
100 // TODO: implement culling |
100 // TODO: implement culling |
101 |
101 |
102 // check if geometry needs update |
102 // check if geometry needs update |
|
103 asc_clear_flag(node->flags, |
|
104 ASC_SCENE_NODE_GRAPHICS_UPDATED |
|
105 | ASC_SCENE_NODE_TRANSFORM_UPDATED); |
103 if (asc_test_flag(node->flags, ASC_SCENE_NODE_UPDATE_GRAPHICS)) { |
106 if (asc_test_flag(node->flags, ASC_SCENE_NODE_UPDATE_GRAPHICS)) { |
|
107 asc_set_flag(node->flags, ASC_SCENE_NODE_GRAPHICS_UPDATED); |
|
108 asc_clear_flag(node->flags, ASC_SCENE_NODE_UPDATE_GRAPHICS); |
104 assert(node->update_func != NULL); |
109 assert(node->update_func != NULL); |
105 asc_clear_flag(node->flags, ASC_SCENE_NODE_UPDATE_GRAPHICS); |
|
106 node->update_func(node); |
110 node->update_func(node); |
107 } |
111 } |
108 if (asc_test_flag(node->flags, ASC_SCENE_NODE_UPDATE_TRANSFORM)) { |
112 if (asc_test_flag(node->flags, ASC_SCENE_NODE_UPDATE_TRANSFORM)) { |
109 asc_test_flag(node->flags, ASC_SCENE_NODE_UPDATE_TRANSFORM); |
113 asc_set_flag(node->flags, ASC_SCENE_NODE_TRANSFORM_UPDATED); |
|
114 asc_clear_flag(node->flags, ASC_SCENE_NODE_UPDATE_TRANSFORM); |
110 asc_transform_from_parts( |
115 asc_transform_from_parts( |
111 node->transform, |
116 node->transform, |
112 node->position, |
117 node->position, |
113 node->scale, |
118 node->scale, |
114 node->rotation |
119 node->rotation |