Editor
Fontes: editor/src/editor_app.cpp, editor/src/editor_app.hpp, editor/src/panels/
Visão Geral
O editor é um executável standalone (guebly_editor) construído sobre guebly_core e Dear ImGui (backend SDL2 + OpenGL 3). Fornece browser de projetos, hierarquia de cena, inspetor, viewport, console e browser de assets.
O editor não usa Engine::run() do guebly_core. Tem seu próprio loop de eventos SDL2 e loop de renderização ImGui em EditorApp.
Sequência de Inicialização
- Tela de splash — splash animado de 2.5 segundos com barra de progresso e branding Guebly.
- UI principal — após o splash,
draw_main_uié chamado a cada frame.
Layout
O editor usa um ImGui DockSpace sobre a janela inteira:
┌──────────────┬──────────────────────────────┬─────────────────┐
│ Hierarquia │ │ Inspetor │
│ (~250 px) │ Viewport │ (~300 px) │
│ │ │ │
├──────────────┤ │ │
│ (busca) │ │ │
├──────────────┼──────────────────────────────┴─────────────────┤
│ │ Console | Browser Assets (~200 px base) │
└──────────────┴─────────────────────────────────────────────────┘
Toolbar (acima do dockspace, sem barra de título)
Todos os painéis podem ser alternados via menu Janela.
Menu Bar
| Menu | Itens |
|---|---|
| Arquivo | Nova Cena (Ctrl+N), Abrir Projeto… (Ctrl+O), Salvar Cena (Ctrl+S), Publicar na Loja…, Sair (Alt+F4) |
| Editar | Desfazer (Ctrl+Z), Refazer (Ctrl+Y), Snap ao Grid |
| Janela | Alternar: Hierarquia, Inspetor, Browser Assets, Console, Viewport |
| Ajuda | Documentação, Sobre… |
Toolbar
Janela ImGui flutuante sem barra de título:
- Play — transição de
EditparaPlay; verde quando ativo - Pause — transição de
PlayparaPaused; clicar novamente retoma - Stop — retorna para
Edit; vermelho quando não está em Edit - Contador de FPS (lado direito) — verde ≥55, amarelo ≥30, vermelho <30
- Label de versão
v1.0.0
Painéis
Hierarquia
Exibe todas as entidades com componente Name. Recursos:
- Barra de busca — filtra por nome de entidade
- + Entidade — cria entidade via
World::create - Nós em árvore — entidades com filhos aparecem como nós expansíveis
- Click para selecionar — define entidade
m_selected - Menu de contexto (botão direito) — Duplicar (stub), Deletar
Inspetor
Exibe componentes da entidade selecionada. Componentes editáveis:
- Transform — position (x/y/z), rotation (x/y/z graus), scale (x/y/z)
- MeshRenderer — checkbox enabled, seletor de material (placeholder)
- Camera — FOV slider, near/far planes, projection toggle (Perspective/Ortho)
- Light — tipo (Directional/Point/Spot), cor RGBA, intensidade
- Rigidbody — massa, drag linear/angular, checkbox useGravity
- Script — caminho do script Lua, botão Recarregar
Viewport
Área central de visualização. Exibe a câmera da cena ativa. Em modo Edit mostra um frame verde ao redor.
Console
Exibe mensagens de log do engine e scripts Lua. Suporte a filtros: All, Info, Warn, Error. Botão Clear.
Browser de Assets
Navegação de arquivos do projeto. Exibe ícones para arquivos .lua, .png, .ogg, .json.
Modo Play
O modo Play do editor é um stub de simulação. Scripts Lua não são executados. Para rodar Lua de verdade, use guebly_runtime.
Publicar na Loja
Arquivo → Publicar na Loja… abre um diálogo modal:
- Insira seu token de desenvolvedor da Guebly Store
- Clique em Publicar
- O editor chama
python tools/publish.py <project_path> <token>internamente - Status da publicação aparece no diálogo
Para publicar via linha de comando:
python tools/publish.py templates/engine-demo SEU_TOKEN
Atalhos de Teclado
| Atalho | Ação |
|---|---|
Ctrl+N | Nova cena |
Ctrl+O | Abrir projeto |
Ctrl+S | Salvar cena |
Ctrl+Z | Desfazer |
Ctrl+Y | Refazer |
Alt+F4 | Sair |
F5 | Play/Stop |
F6 | Pause/Resume |