diff -r 5b91bbab1ac0 -r e5f8c99b0987 src/text.c --- a/src/text.c Sat May 10 15:42:56 2025 +0200 +++ b/src/text.c Sat May 10 18:51:45 2025 +0200 @@ -73,6 +73,7 @@ static void asc_text_destroy(AscSceneNode *node) { AscText *text = (AscText*) node; AscSprite *sprite = (AscSprite*) node; + asc_mesh_destroy(&sprite->mesh); asc_texture_destroy(sprite->texture, 1); assert(sprite->texture->refcount == 0); free(sprite->texture); @@ -81,15 +82,18 @@ AscSceneNode *asc_text_create(struct asc_text_create_args args) { AscText *text = calloc(1, sizeof(AscText)); - AscSceneNode *node = (AscSceneNode*) text; + AscSceneNode *node = &text->base.data; + // node properties + asc_scene_node_name(node, args.name); node->render_group = ASC_RENDER_GROUP_SPRITE_BLEND; node->destroy_func = asc_text_destroy; node->update_func = asc_text_update; - - node->flags = args.alignment; node->position = asc_vec3f_new(args.x, args.y, ASC_SCENE_2D_DEPTH_OFFSET); node->scale.depth = 1.f; + + // text properties + node->flags = args.alignment; // use flags variable to save some space text->max_width = args.max_width; text->font = asc_active_font; text->color = asc_context.ink; @@ -99,8 +103,8 @@ text->text = cx_mutstr(strdup(args.text)); } - // initialize - asc_scene_node_name(node, args.name); + // initialize mesh and texture + asc_mesh_plane_2d(&text->base.mesh); text->base.texture = malloc(sizeof(AscTexture)); asc_texture_init_rectangle(text->base.texture, 1); asc_text_update(node);