26 */ |
26 */ |
27 |
27 |
28 #include "ascension/error.h" |
28 #include "ascension/error.h" |
29 #include "ascension/context.h" |
29 #include "ascension/context.h" |
30 #include "ascension/scene.h" |
30 #include "ascension/scene.h" |
|
31 #include "ascension/behavior.h" |
31 #include "ascension/shader.h" |
32 #include "ascension/shader.h" |
32 #include "ascension/2d.h" |
33 #include "ascension/2d.h" |
33 |
34 |
34 #include <cx/tree.h> |
35 #include <cx/tree.h> |
35 #include <cx/linked_list.h> |
36 #include <cx/linked_list.h> |
91 if (asc_test_flag(node->flags, ASC_SCENE_NODE_HIDDEN)) { |
92 if (asc_test_flag(node->flags, ASC_SCENE_NODE_HIDDEN)) { |
92 cxTreeVisitorContinue(iter); |
93 cxTreeVisitorContinue(iter); |
93 } |
94 } |
94 |
95 |
95 // execute behaviors, first |
96 // execute behaviors, first |
96 if (node->behaviors != NULL) { |
97 // TODO: move to a separate iteration that is decoupled from drawing - issue #646 |
97 CxIterator behavior_iter = cxListIterator(node->behaviors); |
98 CxIterator behavior_iter = cxListIterator(node->behaviors); |
98 cx_foreach(asc_scene_update_func, behavior, behavior_iter) { |
99 cx_foreach(AscBehavior*, behavior, behavior_iter) { |
99 behavior(node); |
100 behavior->func(behavior); |
100 } |
|
101 } |
101 } |
102 |
102 |
103 // TODO: implement culling |
103 // TODO: implement culling |
104 |
104 |
105 // check if geometry needs update |
105 // check if geometry needs update |