131 offsetof(AscSceneNode, next) |
131 offsetof(AscSceneNode, next) |
132 ); |
132 ); |
133 asc_node_update_transform(node); |
133 asc_node_update_transform(node); |
134 } |
134 } |
135 |
135 |
136 // TODO: rename in asc_node_add_behavior or just asc_add_behavior() |
|
137 void asc_scene_add_behavior( |
|
138 AscSceneNode *node, |
|
139 asc_scene_node_update_func behavior |
|
140 ) { |
|
141 if (node->behaviors == NULL) { |
|
142 node->behaviors = cxLinkedListCreateSimple(CX_STORE_POINTERS); |
|
143 } |
|
144 // TODO: create AscBehavior struct with more stuff than just a fptr |
|
145 cxListAdd(node->behaviors, behavior); |
|
146 } |
|
147 |
|
148 void asc_scene_remove_behavior( |
|
149 AscSceneNode *node, |
|
150 asc_scene_node_update_func behavior |
|
151 ) { |
|
152 if (node->behaviors != NULL) { |
|
153 cxListFindRemove(node->behaviors, behavior); |
|
154 } |
|
155 } |
|
156 |
|
157 void asc_node_update(AscSceneNode *node) { |
136 void asc_node_update(AscSceneNode *node) { |
158 asc_set_flag(node->flags, ASC_SCENE_NODE_UPDATE_GRAPHICS); |
137 asc_set_flag(node->flags, ASC_SCENE_NODE_UPDATE_GRAPHICS); |
159 } |
138 } |
160 |
139 |
161 void asc_node_update_transform(AscSceneNode *node) { |
140 void asc_node_update_transform(AscSceneNode *node) { |