46 ); |
46 ); |
47 } |
47 } |
48 |
48 |
49 AscSceneNode *asc_scene_node_empty(void) { |
49 AscSceneNode *asc_scene_node_empty(void) { |
50 AscSceneNode *node = cxZallocDefault(sizeof(AscSceneNode)); |
50 AscSceneNode *node = cxZallocDefault(sizeof(AscSceneNode)); |
51 node->render_group = ASC_RENDER_GROUP_NONE; |
51 asc_scene_node_init(node, .render_group = ASC_RENDER_GROUP_NONE); |
52 asc_transform_identity(node->transform); |
|
53 asc_transform_identity(node->world_transform); |
|
54 return node; |
52 return node; |
55 } |
53 } |
56 |
54 |
57 static void asc_scene_node_destroy(AscSceneNode *node) { |
55 static void asc_scene_node_destroy(AscSceneNode *node) { |
58 cxListFree(node->behaviors); |
56 cxListFree(node->behaviors); |
86 void asc_scene_node_init_(AscSceneNode *node, struct asc_scene_node_init_args args) { |
84 void asc_scene_node_init_(AscSceneNode *node, struct asc_scene_node_init_args args) { |
87 if (args.name != NULL) { |
85 if (args.name != NULL) { |
88 asc_scene_node_name(node, args.name); |
86 asc_scene_node_name(node, args.name); |
89 } |
87 } |
90 node->render_group = args.render_group; |
88 node->render_group = args.render_group; |
91 assert(args.update_func != NULL); |
89 if (args.render_group != ASC_RENDER_GROUP_NONE) { |
92 assert(args.draw_func != NULL); |
90 assert(args.update_func != NULL); |
93 assert(args.destroy_func != NULL); |
91 assert(args.draw_func != NULL); |
|
92 assert(args.destroy_func != NULL); |
|
93 } |
94 node->update_func = args.update_func; |
94 node->update_func = args.update_func; |
95 node->destroy_func = args.destroy_func; |
95 node->destroy_func = args.destroy_func; |
96 node->draw_func = args.draw_func; |
96 node->draw_func = args.draw_func; |
97 |
97 |
98 if (args.pos2d.x != 0 || args.pos2d.y != 0) { |
98 if (args.pos2d.x != 0 || args.pos2d.y != 0) { |