src/sprite.c

changeset 207
4d184a8706b1
parent 206
26726b7a89a7
child 212
90bbacb97cb6
--- a/src/sprite.c	Mon Jul 14 21:56:53 2025 +0200
+++ b/src/sprite.c	Wed Jul 16 23:27:34 2025 +0200
@@ -124,21 +124,17 @@
     sprite->texture_scale.v = ASC_NONZERO_OR(1.f, args.texture_scale_y);
 
     // basic node parameters
-    AscSceneNode *node = (AscSceneNode *) sprite;
-    asc_scene_node_name(node, args.name);
-    node->render_group = args.opaque
+    asc_ptr_cast(AscSceneNode, node, sprite);
+    asc_scene_node_init(node,
+        ASC_SCENE_NODE_FUNCS(asc_sprite),
+        .name = args.name,
+        .render_group = args.opaque
                              ? ASC_RENDER_GROUP_2D_OPAQUE
-                             : ASC_RENDER_GROUP_2D_BLEND;
-    node->update_func = asc_sprite_update;
-    node->destroy_func = asc_sprite_destroy;
-    node->draw_func = asc_sprite_draw;
+                             : ASC_RENDER_GROUP_2D_BLEND,
+        .pos2d = ASC_VEC2I(args.x, args.y),
+        .origin2d = ASC_VEC2I(args.origin_x, args.origin_y)
+    );
 
-    node->position = ASC_VEC3F(args.x, args.y, ASC_SCENE_2D_DEPTH_OFFSET);
-    node->origin = ASC_VEC3F(args.origin_x, args.origin_y, 0);
-    node->scale = ASC_VEC3F_1;
-    asc_mat4f_unit(node->rotation);
-
-    asc_scene_node_update(node);
     return node;
 }
 

mercurial