75 |
75 |
76 // calculate texture parameters |
76 // calculate texture parameters |
77 asc_vec2f uv_scale; |
77 asc_vec2f uv_scale; |
78 if (sprite->texture_scale_mode == ASC_TEXTURE_SCALE_REPEAT) { |
78 if (sprite->texture_scale_mode == ASC_TEXTURE_SCALE_REPEAT) { |
79 uv_scale = asc_texture_calculate_uv_scale(sprite->texture, |
79 uv_scale = asc_texture_calculate_uv_scale(sprite->texture, |
80 asc_vec2u_new(sprite->width, sprite->height), sprite->texture_scale); |
80 ASC_VEC2U(sprite->width, sprite->height), sprite->texture_scale); |
81 } else { |
81 } else { |
82 uv_scale = sprite->texture_scale; |
82 uv_scale = sprite->texture_scale; |
83 } |
83 } |
84 |
84 |
85 // update mesh |
85 // update mesh |
86 asc_mesh_plane_2d(&sprite->mesh, |
86 asc_mesh_plane_2d(&sprite->mesh, |
87 .size = asc_vec2f_new(sprite->width, sprite->height), |
87 .size = ASC_VEC2F(sprite->width, sprite->height), |
88 .uv_scale = uv_scale |
88 .uv_scale = uv_scale |
89 ); |
89 ); |
90 } |
90 } |
91 |
91 |
92 void asc_sprite_draw(const AscCamera *camera, const AscSceneNode *node) { |
92 void asc_sprite_draw(const AscCamera *camera, const AscSceneNode *node) { |
131 : ASC_RENDER_GROUP_2D_BLEND; |
131 : ASC_RENDER_GROUP_2D_BLEND; |
132 node->update_func = asc_sprite_update; |
132 node->update_func = asc_sprite_update; |
133 node->destroy_func = asc_sprite_destroy; |
133 node->destroy_func = asc_sprite_destroy; |
134 node->draw_func = asc_sprite_draw; |
134 node->draw_func = asc_sprite_draw; |
135 |
135 |
136 node->position = asc_vec3f_new(args.x, args.y, ASC_SCENE_2D_DEPTH_OFFSET); |
136 node->position = ASC_VEC3F(args.x, args.y, ASC_SCENE_2D_DEPTH_OFFSET); |
137 node->scale = asc_vec3f_one; |
137 node->scale = ASC_VEC3F_1; |
138 |
138 |
139 asc_node_update(node); |
139 asc_node_update(node); |
140 return node; |
140 return node; |
141 } |
141 } |
142 |
142 |