#include "UltraEngine.h"
using namespace UltraEngine;
shared_ptr<Window> window;
shared_ptr<Framebuffer> framebuffer;
shared_ptr<World> world;
shared_ptr<Interface> ui;
shared_ptr<Camera> uiCamera;
shared_ptr<Widget> btn;
static bool EventCallback(const Event& e, shared_ptr<Object> extra)
{
Print("Callback");
return true;
}
void initGui()
{
auto default_font = LoadFont("Fonts\\arial.ttf");
ui = CreateInterface(world, default_font, framebuffer->GetSize());
ui->SetRenderLayers(2);
ui->root->SetColor(0.0f, 0.0f, 0.0f, 0.0f);
uiCamera = CreateCamera(world, PROJECTION_ORTHOGRAPHIC);
uiCamera->SetPosition((float)framebuffer->GetSize().x * 0.5f, (float)framebuffer->GetSize().y * 0.5f, 0);
uiCamera->SetRenderLayers(2);
uiCamera->SetClearMode(CLEAR_DEPTH);
btn = CreateButton("Btn", 20, 20, 100, 100, ui->root);
}
int main(int argc, const char* argv[])
{
//Get the displays
auto displays = GetDisplays();
//Create a window
window = CreateWindow("Ultra Engine", 0, 0, 300, 300, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR);
//Create a world
world = CreateWorld();
//Create a framebuffer
framebuffer = CreateFramebuffer(window);
//Create a camera
auto camera = CreateCamera(world);
camera->SetClearColor(0, 0, 0);
initGui();
ListenEvent(EVENT_DATA, NULL, EventCallback, btn);
//Main loop
while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false)
{
if (window->KeyDown(KEY_SPACE))
{
Print(btn.use_count());
EmitEvent(EVENT_DATA, btn);
Print(btn.use_count());
}
world->Update();
world->Render(framebuffer);
}
return 0;
}