| 57 |
57 |
| 58 node->position = asc_vec3f_new(args.x, args.y, ASC_SCENE_2D_DEPTH_OFFSET); |
58 node->position = asc_vec3f_new(args.x, args.y, ASC_SCENE_2D_DEPTH_OFFSET); |
| 59 node->scale = asc_vec3f_one; |
59 node->scale = asc_vec3f_one; |
| 60 asc_node_update_transform(node); |
60 asc_node_update_transform(node); |
| 61 |
61 |
| |
62 // calculate texture parameters |
| |
63 asc_vec2f uv_scale; |
| |
64 uv_scale.u = ASC_NONZERO_OR(1.f, args.texture_scale_x); |
| |
65 uv_scale.v = ASC_NONZERO_OR(1.f, args.texture_scale_y); |
| |
66 if (args.texture_scale_mode == ASC_TEXTURE_SCALE_REPEAT) { |
| |
67 uv_scale = asc_texture_calculate_uv_scale(args.texture, |
| |
68 asc_vec2u_new(args.width, args.height), uv_scale); |
| |
69 } |
| |
70 |
| 62 // initialize mesh |
71 // initialize mesh |
| 63 asc_mesh_plane_2d(&sprite->mesh, |
72 asc_mesh_plane_2d(&sprite->mesh, |
| 64 .size = asc_vec2f_new(args.width, args.height), |
73 .size = asc_vec2f_new(args.width, args.height), |
| 65 // TODO: support different texture modes |
74 .uv_scale = uv_scale |
| 66 ); |
75 ); |
| 67 |
76 |
| 68 return node; |
77 return node; |
| 69 } |
78 } |
| 70 |
79 |