struct anm_node *anm_create_node(void) { struct anm_node *n; if((n = malloc(sizeof *n))) { if(anm_init_node(n) == -1) { free(n); return 0; } } return n; }
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; }