def render(self, screen: pygame.Surface, screen_rect: Rect, *, debug=False): screen.fill(self.background.rgb_255) for obj in self.game_objects: for renderer in obj.renderers: if renderer.image is not None and renderer.rect is not None: rel = renderer.rect.relative_rect(screen_rect) if not rel.collide_rect(Rect0011): if debug: print( f"Did not render '{renderer}' of object '{obj}' (Not on screen)" ) continue rect_on_screen = rel.scale_wh(screen.get_size()) img = pygame.transform.scale(renderer.image, rect_on_screen.wh.rounded) screen.blit(img, rect_on_screen.xy.rounded) else: if debug: print( f"Did not render '{renderer}' of object '{obj}' (No Image or Rect)" ) if debug and not obj.renderers: print(f"Did not render object '{obj}' (No Renderer)") if obj.transform and debug: t = obj.transform p1 = (screen_rect.relative_point(t.pos) @ screen.get_size()).rounded p2 = (screen_rect.relative_point(t.pos + Vector.from_polar( math.radians(-t.rotation), 1)) @ screen.get_size()).rounded pygame.draw.circle(screen, (255, 0, 0), p1, 5) pygame.draw.line(screen, (0, 255, 0), p1, p2, 3) elif debug: print(f"Did not debug object '{obj}' (No Transform)")