src/sprite.c

changeset 207
4d184a8706b1
parent 206
26726b7a89a7
child 212
90bbacb97cb6
equal deleted inserted replaced
206:26726b7a89a7 207:4d184a8706b1
122 sprite->texture_scale_mode = args.texture_scale_mode; 122 sprite->texture_scale_mode = args.texture_scale_mode;
123 sprite->texture_scale.u = ASC_NONZERO_OR(1.f, args.texture_scale_x); 123 sprite->texture_scale.u = ASC_NONZERO_OR(1.f, args.texture_scale_x);
124 sprite->texture_scale.v = ASC_NONZERO_OR(1.f, args.texture_scale_y); 124 sprite->texture_scale.v = ASC_NONZERO_OR(1.f, args.texture_scale_y);
125 125
126 // basic node parameters 126 // basic node parameters
127 AscSceneNode *node = (AscSceneNode *) sprite; 127 asc_ptr_cast(AscSceneNode, node, sprite);
128 asc_scene_node_name(node, args.name); 128 asc_scene_node_init(node,
129 node->render_group = args.opaque 129 ASC_SCENE_NODE_FUNCS(asc_sprite),
130 .name = args.name,
131 .render_group = args.opaque
130 ? ASC_RENDER_GROUP_2D_OPAQUE 132 ? ASC_RENDER_GROUP_2D_OPAQUE
131 : ASC_RENDER_GROUP_2D_BLEND; 133 : ASC_RENDER_GROUP_2D_BLEND,
132 node->update_func = asc_sprite_update; 134 .pos2d = ASC_VEC2I(args.x, args.y),
133 node->destroy_func = asc_sprite_destroy; 135 .origin2d = ASC_VEC2I(args.origin_x, args.origin_y)
134 node->draw_func = asc_sprite_draw; 136 );
135 137
136 node->position = ASC_VEC3F(args.x, args.y, ASC_SCENE_2D_DEPTH_OFFSET);
137 node->origin = ASC_VEC3F(args.origin_x, args.origin_y, 0);
138 node->scale = ASC_VEC3F_1;
139 asc_mat4f_unit(node->rotation);
140
141 asc_scene_node_update(node);
142 return node; 138 return node;
143 } 139 }
144 140
145 void asc_sprite_set_size(AscSprite *sprite, asc_vec2u size) { 141 void asc_sprite_set_size(AscSprite *sprite, asc_vec2u size) {
146 sprite->width = size.width; 142 sprite->width = size.width;

mercurial