Pular para o conteúdo principal

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​

  1. Tela de splash — splash animado de 2.5 segundos com barra de progresso e branding Guebly.
  2. 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.


MenuItens
ArquivoNova Cena (Ctrl+N), Abrir Projeto… (Ctrl+O), Salvar Cena (Ctrl+S), Publicar na Loja…, Sair (Alt+F4)
EditarDesfazer (Ctrl+Z), Refazer (Ctrl+Y), Snap ao Grid
JanelaAlternar: Hierarquia, Inspetor, Browser Assets, Console, Viewport
AjudaDocumentação, Sobre…

Toolbar​

Janela ImGui flutuante sem barra de título:

  • Play — transição de Edit para Play; verde quando ativo
  • Pause — transição de Play para Paused; 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​

atenção

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:

  1. Insira seu token de desenvolvedor da Guebly Store
  2. Clique em Publicar
  3. O editor chama python tools/publish.py <project_path> <token> internamente
  4. 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​

AtalhoAção
Ctrl+NNova cena
Ctrl+OAbrir projeto
Ctrl+SSalvar cena
Ctrl+ZDesfazer
Ctrl+YRefazer
Alt+F4Sair
F5Play/Stop
F6Pause/Resume