Files
orni-attack/source/core/utils/easing.hpp
T
JailDesigner 81330f8432 feat(notifier): infrastructura del sistema de notificacions toast
- Notifier singleton (System::init/get/destroy) que dibuixa un cuadre
  centrat al centre-superior amb fons semitransparent (derivat oscur del
  color del text) i bordes en línies.
- Màquina d'estats HIDDEN → ENTERING → HOLDING → EXITING amb easing
  outCubic (entrada) i inCubic (sortida), slide de 300 ms.
- pushRect() afegit a GpuFrameRenderer (2 triangles, edge_dist=0) per
  poder pintar el fons opac/semitransparent reutilitzant el pipeline de
  línies — sense afegir cap pipeline nou.
- VectorText::render/renderCentered admeten color RGBA explícit
  (default {0,0,0,0} preserva el comportament previ amb oscil·lador
  global de color).
- Easing header-only a core/utils/easing.hpp (outCubic, inCubic).
- Director crea Notifier just després del DebugOverlay i el draweja com
  a última capa per damunt de l'escena i el debug.

Encara cap consumer el crida; els F1-F5 i la doble pulsació d'ESC
arriben en commits posteriors.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 22:07:56 +02:00

25 lines
804 B
C++

// easing.hpp - Funciones d'interpolació suaus (header-only)
// © 2026 JailDesigner
//
// Conjunt mínim de funcions easing per a animacions d'UI. Totes prenen un
// paràmetre normalitzat t ∈ [0,1] i retornen un valor ∈ [0,1].
#pragma once
namespace Utils::Easing {
// outCubic: ràpid al principi, suau cap al final. Útil per a entrades de
// notificacions (slide-in: arrenc d'impacte i frenada cuidada).
constexpr auto outCubic(float t) -> float {
const float INV = 1.0F - t;
return 1.0F - (INV * INV * INV);
}
// inCubic: arranca suau, accelera cap al final. Útil per a sortides
// (slide-out: comença discretament i desapareix ràpid).
constexpr auto inCubic(float t) -> float {
return t * t * t;
}
} // namespace Utils::Easing