93 lines
3.2 KiB
Markdown
93 lines
3.2 KiB
Markdown
# Tahgibu 2.0.0
|
|
|
|
Editor de animación 2D ligero y nativo para Linux.
|
|
C++ · C · Lua · raylib · CMake. **Sin Python.**
|
|
|
|
## Estado actual: Etapa 1 (base)
|
|
|
|
Hecho y verificado:
|
|
|
|
- Sistema de compilación con CMake (C, C++, raylib; Lua solo se detecta).
|
|
- Núcleo sin dependencias gráficas (`source/core`): `Frame`, `Project`, límite de 60 FPS,
|
|
duración real por frame. Con pruebas automáticas.
|
|
- Ventana de raylib con el reparto de zonas: menús, herramientas, canvas, propiedades, timeline.
|
|
- Registro de herramientas (`source/editor/Tool.hpp`): la barra sale de una tabla.
|
|
|
|
Todavía **no** hace nada más que eso:
|
|
|
|
- Los menús se dibujan pero no abren nada.
|
|
- Las herramientas se pueden seleccionar (queda resaltada), pero no editan nada.
|
|
- La timeline es un esqueleto vacío (etapa 3).
|
|
|
|
## Dependencias
|
|
|
|
Necesarias hoy: compilador C++17, CMake >= 3.16 y raylib >= 4.0.
|
|
|
|
| Distro | raylib |
|
|
|---|---|
|
|
| Arch | `sudo pacman -S raylib` |
|
|
| Fedora | `sudo dnf install raylib-devel` |
|
|
| Debian/Ubuntu | `libraylib-dev` si tu versión lo trae |
|
|
|
|
Si tu distro no la trae, dos opciones:
|
|
|
|
1. Compilarla desde https://github.com/raysan5/raylib (en Debian/Ubuntu necesita
|
|
`libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev
|
|
libxcursor-dev libxinerama-dev libwayland-dev libxkbcommon-dev`).
|
|
2. Dejar que CMake la descargue y compile: `cmake -S . -B build -DTAHGIBU_FETCH_RAYLIB=ON`
|
|
(requiere red y `git`).
|
|
|
|
Lua (`liblua5.4-dev` en Debian/Ubuntu, `lua` en Arch, `lua-devel` en Fedora) no hace falta
|
|
hasta la etapa 10.
|
|
|
|
## Compilar y ejecutar
|
|
|
|
```bash
|
|
cmake -S . -B build
|
|
cmake --build build
|
|
./build/tahgibu
|
|
```
|
|
|
|
Solo núcleo + pruebas, sin raylib:
|
|
|
|
```bash
|
|
cmake -S . -B build -DTAHGIBU_BUILD_APP=OFF
|
|
cmake --build build
|
|
ctest --test-dir build --output-on-failure
|
|
```
|
|
|
|
## Estructura
|
|
|
|
```text
|
|
source/
|
|
├── main.cpp
|
|
├── core/ modelo de datos (sin raylib): Frame, Project, constantes
|
|
├── editor/ estado del editor y registro de herramientas
|
|
└── ui/ ventana, layout y dibujo con raylib
|
|
tests/ pruebas del núcleo
|
|
```
|
|
|
|
Los `.hpp` viven junto a su `.cpp`; `source/` es la raíz de includes
|
|
(`#include "core/Project.hpp"`). Las carpetas `canvas/`, `timeline/`, `animation/`,
|
|
`project/`, `media/`, `export/` y `lua/` se crean cuando llega su etapa.
|
|
|
|
## Decisiones de diseño
|
|
|
|
- **FPS por frame = override opcional.** Un frame usa el FPS base del proyecto salvo que
|
|
tenga FPS propios. Cambiar el FPS base afecta a los frames sin override.
|
|
- **Límite 60 FPS** aplicado en un único punto (`Frame::clampFps`) para el base y para cada frame.
|
|
- **Mínimo 0.1 FPS** (un frame puede durar hasta 10 s) para hacer pausas largas sin duplicar frames.
|
|
Se cambia en `core/Constants.hpp`.
|
|
- **El FPS de la interfaz (60) es independiente** del FPS de la animación.
|
|
|
|
## Limitaciones conocidas
|
|
|
|
- El texto usa la fuente por defecto de raylib. Si las tildes salen como `?`, hará falta
|
|
cargar una fuente propia.
|
|
- Esc no cierra la ventana (a propósito, para no perder trabajo); se cierra con el botón de la ventana.
|
|
|
|
## Hoja de ruta
|
|
|
|
1 Base · 2 Editor · 3 Frames · 4 Sprites · 5 Fondos · 6 FPS · 7 Audio · 8 Vértices ·
|
|
9 Proyecto · 10 Lua · 11 Exportación
|