feat(demo): transició per fosa a/desde negre en el salt títol→demo
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
// screen_fade.hpp - Fosa a/desde negre per a transicions d'escena
|
||||
// © 2026 JailDesigner
|
||||
//
|
||||
// Rect negre a pantalla completa amb l'alpha animat linealment. L'escena que el
|
||||
// posseeix l'actualitza cada frame i el dibuixa l'ÚLTIM (per damunt de tot). En
|
||||
// repòs (default-construït o fosa acabada amb alpha 0) el draw() és un no-op.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/rendering/render_context.hpp"
|
||||
|
||||
namespace Graphics {
|
||||
|
||||
class ScreenFade {
|
||||
public:
|
||||
explicit ScreenFade(Rendering::Renderer* renderer);
|
||||
|
||||
// Arrenca una fosa lineal d'alpha 'from' a 'to' en 'duration' segons.
|
||||
void start(float from, float to, float duration);
|
||||
|
||||
// Avança el temporitzador intern.
|
||||
void update(float delta_time);
|
||||
|
||||
// Dibuixa el rect negre a pantalla completa amb l'alpha actual.
|
||||
// No fa res si l'alpha és ~0 (estalvia el pushRect).
|
||||
void draw() const;
|
||||
|
||||
// Cert quan la fosa ha acabat (o no s'ha arrencat mai).
|
||||
[[nodiscard]] auto isDone() const -> bool;
|
||||
|
||||
// Alpha actual ∈ [0, 1].
|
||||
[[nodiscard]] auto alpha() const -> float;
|
||||
|
||||
private:
|
||||
Rendering::Renderer* renderer_;
|
||||
float from_{0.0F};
|
||||
float to_{0.0F};
|
||||
float duration_{0.0F};
|
||||
float elapsed_{0.0F};
|
||||
bool active_{false};
|
||||
};
|
||||
|
||||
} // namespace Graphics
|
||||
Reference in New Issue
Block a user