src/scene_node.c

changeset 131
b951ae1c638d
parent 122
1b118cd3e369
equal deleted inserted replaced
130:c3fce2a543ee 131:b951ae1c638d
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) {

mercurial