src/sprite.c

changeset 117
d1267f656a97
parent 116
bfb2a7d62047
child 118
830608f7e7d9
--- a/src/sprite.c	Sun May 11 14:51:00 2025 +0200
+++ b/src/sprite.c	Mon May 12 20:51:57 2025 +0200
@@ -59,10 +59,19 @@
     node->scale = asc_vec3f_one;
     asc_node_update_transform(node);
 
+    // calculate texture parameters
+    asc_vec2f uv_scale;
+    uv_scale.u = ASC_NONZERO_OR(1.f, args.texture_scale_x);
+    uv_scale.v = ASC_NONZERO_OR(1.f, args.texture_scale_y);
+    if (args.texture_scale_mode == ASC_TEXTURE_SCALE_REPEAT) {
+        uv_scale = asc_texture_calculate_uv_scale(args.texture,
+            asc_vec2u_new(args.width, args.height), uv_scale);
+    }
+
     // initialize mesh
     asc_mesh_plane_2d(&sprite->mesh,
         .size = asc_vec2f_new(args.width, args.height),
-        // TODO: support different texture modes
+        .uv_scale = uv_scale
     );
 
     return node;

mercurial