def _draw_sprite(state, canvas, view_pos, view_scale, sprite_name, texture, pos, scale, rotate, origin_xy): """ TODO """ rectangles_rotates_dict = state[globals.IDX_STATE_SPRITES][IDX_SPRITES_RECTS_ROTS] col = int(pos[0]) row = int(pos[1]) scaled_tile_size = tiles.get_tile_size(state) * view_scale tile_x = col * scaled_tile_size tile_y = row * scaled_tile_size draw_x = tile_x - view_pos[0] * scaled_tile_size draw_y = tile_y - view_pos[1] * scaled_tile_size draw_pos = (draw_x, draw_y) offset = (pos[0] - col, pos[1] - row,) offset_pos = (int(draw_pos[0] + scaled_tile_size * offset[0] + origin_xy[0]), int(draw_pos[1] + scaled_tile_size * offset[1] + origin_xy[1])) if rectangles_rotates_dict.has_key(sprite_name): rect, rot = rectangles_rotates_dict[sprite_name] if not rect.texture is texture: rect.texture = texture pos_changed = (abs(rect.pos[0] - offset_pos[0]) > 1) or (abs(rect.pos[1] - offset_pos[1]) > 1) rot_changed = abs(rot.angle - rotate) > 1 if pos_changed or rot_changed: rect.pos = offset_pos rot.angle = rotate x = offset_pos[0] y = offset_pos[1] w = texture.size[0] * view_scale * scale[0] h = texture.size[1] * view_scale * scale[1] rot.origin = (x + w/2, y + h/2) else: with canvas: PushMatrix() x = offset_pos[0] y = offset_pos[1] w = texture.size[0] * view_scale * scale[0] h = texture.size[1] * view_scale * scale[1] rot = Rotate() rot.angle = rotate rot.axis = (0, 0, 1) rot.origin = (x + w/2, y + h/2) rect = Rectangle( texture=texture, pos=offset_pos, size=(w, h) ) rectangles_rotates_dict[sprite_name] = (rect, rot,) PopMatrix()
def draw_quad(self, star_list): star_tex = Image('star1.png').texture with self.canvas: for star in star_list: size = .5 * star[2] PushMatrix() t = Translate() r = Rotate() r.angle = star[3] Quad(texture=star_tex, points=(-size, -size, size, -size, size, size, -size, size)) t.xy = star[0], star[1] PopMatrix()
def draw_quad(self, star_list): star_tex = Image('star1.png').texture with self.canvas: for star in star_list: size = .5*star[2] PushMatrix() t = Translate() r = Rotate() r.angle = star[3] Quad(texture = star_tex, points = (-size, -size, size, -size, size, size, -size, size)) t.xy = star[0], star[1] PopMatrix()