void anm_destroy_node_tree(struct anm_node *tree) { struct anm_node *c, *tmp; if(!tree) return; c = tree->child; while(c) { tmp = c; c = c->next; anm_destroy_node_tree(tmp); } anm_destroy_node(tree); }
int psys_init(struct psys_emitter *em) { memset(em, 0, sizeof *em); if(anm_init_node(&em->prs) == -1) { return -1; } if(psys_init_attr(&em->attr) == -1) { anm_destroy_node(&em->prs); return -1; } em->spawn = 0; /* no custom spawning, just the defaults */ em->update = update_particle; em->draw = psys_gl_draw; em->draw_start = psys_gl_draw_start; em->draw_end = psys_gl_draw_end; return 0; }
void anm_free_node(struct anm_node *node) { anm_destroy_node(node); free(node); }