212 } |
212 } |
213 asc_set_flag(n->flags, ASC_SCENE_NODE_UPDATE_TRANSFORM); |
213 asc_set_flag(n->flags, ASC_SCENE_NODE_UPDATE_TRANSFORM); |
214 } |
214 } |
215 } |
215 } |
216 |
216 |
217 void asc_scene_node_allocate_data(AscSceneNode *node, size_t n) { |
217 void *asc_scene_node_allocate_data(AscSceneNode *node, size_t n) { |
218 if (node->user_data != NULL) { |
218 if (node->user_data != NULL) { |
219 asc_dprintf("WARNING: Node %"CX_PRIstr" already has user data!", CX_SFMT(node->name)); |
219 asc_wprintf("Node %"CX_PRIstr" already has user data which is now destroyed!", CX_SFMT(node->name)); |
220 if (node->user_data_free_func != NULL) { |
220 if (node->user_data_free_func != NULL) { |
221 node->user_data_free_func((void*)node->user_data_allocator, node->user_data); |
221 node->user_data_free_func((void*)node->user_data_allocator, node->user_data); |
222 } |
222 } |
223 } |
223 } |
224 node->user_data = cxZallocDefault(n); |
224 node->user_data = cxZallocDefault(n); |
225 node->user_data_allocator = cxDefaultAllocator; |
225 node->user_data_allocator = cxDefaultAllocator; |
226 node->user_data_free_func = (cx_destructor_func2) cxFree; |
226 node->user_data_free_func = (cx_destructor_func2) cxFree; |
227 } |
227 return node->user_data; |
|
228 } |