src/scene_node.c

changeset 211
f181205da2c9
parent 210
3021616e5772
equal deleted inserted replaced
210:3021616e5772 211:f181205da2c9
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) {

mercurial