// shape_renderer.hpp - Renderizado de formes vectorials // © 2025 Port a C++20 con SDL3 #pragma once #include #include #include "core/graphics/shape.hpp" #include "core/types.hpp" namespace Rendering { // Estructura per rotacions 3D (pitch, yaw, roll) struct Rotation3D { float pitch; // Rotación eix X (cabeceo arriba/baix) float yaw; // Rotación eix Y (guiñada izquierda/derecha) float roll; // Rotación eix Z (alabeo lateral) Rotation3D() : pitch(0.0F), yaw(0.0F), roll(0.0F) {} Rotation3D(float p, float y, float r) : pitch(p), yaw(y), roll(r) {} [[nodiscard]] bool has_rotation() const { return pitch != 0.0F || yaw != 0.0F || roll != 0.0F; } }; // Renderizar shape con transformacions // - renderer: SDL renderer // - shape: shape vectorial a draw // - position: posición del centro en coordenades mundials // - angle: rotación en radians (0 = amunt, sentit horari) // - scale: factor de scale (1.0 = mida original) // - progress: progrés de l'animación (0.0-1.0, default 1.0 = tot visible) // - brightness: factor de brightness (0.0-1.0, default 1.0 = màxima brightness) void render_shape(SDL_Renderer* renderer, const std::shared_ptr& shape, const Vec2& position, float angle, float scale = 1.0F, float progress = 1.0F, float brightness = 1.0F, const Rotation3D* rotation_3d = nullptr); } // namespace Rendering