vn/code/vn.cpp

62 lines
1.6 KiB
C++

#include "vn_platform.h"
#include "vn_platform.cpp"
#include "vn_font.h"
#include "vn_text_op.h"
#include "vn_ui.h"
#include "vn_workspace.h"
#include "vn_theme_dark.h"
#include "vn_animation_curve.h"
#include "vn_render.cpp"
#include "vn_font.cpp"
#include "vn_ui.cpp"
#include "vn_ui_utils.cpp"
#include "vn_animation_curve.cpp"
#include "vn_workspace.cpp"
struct vn_state
{
memory_arena Arena;
glyph_atlas *GlyphAtlas;
ui UI;
workspace Workspace;
animation_curve_state AnimationCurveState;
};
VN_UPDATE_AND_RENDER(VN_UpdateAndRender)
{
SetThreadContext(ThreadContext);
Platform = Memory->PlatformAPI;
vn_state *State = Memory->State;
if(!Memory->State)
{
State = Memory->State = BootstrapPushStruct(vn_state, Arena);
State->GlyphAtlas = CreateGlyphAtlas(RenderCommands);
Workspace_Init(&State->Workspace);
}
AnimationCurve_NewFrame(&State->AnimationCurveState, Input->dtForFrame);
UI_NewFrame(&State->UI, Input->EventList, Input->MouseP);
Workspace_Update(&State->Workspace, RenderCommands, Input, State->GlyphAtlas);
// sixten(NOTE): This allows us to check for
UI_SignalFromBox(UI_GetState()->ContainerNode);
for(platform_event *Event = Input->EventList->First;
Event != 0;
Event = Event->Next)
{
Platform_ConsumeEvent(Input->EventList, Event);
}
render_group Group = BeginRenderGroup(RenderCommands);
PushClear(&Group, V3(0.1, 0.1, 0.1));
UI_RenderFrame(&Group, State->GlyphAtlas);
}