mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-04 04:48:40 +00:00
set up interaction register stack
This commit is contained in:
+45
-1
@@ -5870,7 +5870,7 @@ df_eval_viz_row_list_push_new(Arena *arena, EVAL_ParseCtx *parse_ctx, DF_EvalViz
|
|||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Main State Accessors/Mutators
|
//~ rjf: Main State Accessors/Mutators
|
||||||
|
|
||||||
//- rjf: frame metadata
|
//- rjf: frame data
|
||||||
|
|
||||||
internal F32
|
internal F32
|
||||||
df_dt(void)
|
df_dt(void)
|
||||||
@@ -5884,12 +5884,49 @@ df_frame_index(void)
|
|||||||
return df_state->frame_index;
|
return df_state->frame_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal Arena *
|
||||||
|
df_frame_arena(void)
|
||||||
|
{
|
||||||
|
return df_state->frame_arenas[df_state->frame_index%ArrayCount(df_state->frame_arenas)];
|
||||||
|
}
|
||||||
|
|
||||||
internal F64
|
internal F64
|
||||||
df_time_in_seconds(void)
|
df_time_in_seconds(void)
|
||||||
{
|
{
|
||||||
return df_state->time_in_seconds;
|
return df_state->time_in_seconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- rjf: interaction registers
|
||||||
|
|
||||||
|
internal DF_InteractRegs *
|
||||||
|
df_interact_regs(void)
|
||||||
|
{
|
||||||
|
DF_InteractRegs *regs = &df_state->top_interact_regs->v;
|
||||||
|
return regs;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal DF_InteractRegs *
|
||||||
|
df_push_interact_regs(void)
|
||||||
|
{
|
||||||
|
DF_InteractRegs *top = df_interact_regs();
|
||||||
|
DF_InteractRegsNode *n = push_array(df_frame_arena(), DF_InteractRegsNode, 1);
|
||||||
|
MemoryCopyStruct(&n->v, top);
|
||||||
|
SLLStackPush(df_state->top_interact_regs, n);
|
||||||
|
return &n->v;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal DF_InteractRegs *
|
||||||
|
df_pop_interact_regs(void)
|
||||||
|
{
|
||||||
|
DF_InteractRegs *regs = &df_state->top_interact_regs->v;
|
||||||
|
SLLStackPop(df_state->top_interact_regs);
|
||||||
|
if(df_state->top_interact_regs == 0)
|
||||||
|
{
|
||||||
|
df_state->top_interact_regs = &df_state->base_interact_regs;
|
||||||
|
}
|
||||||
|
return regs;
|
||||||
|
}
|
||||||
|
|
||||||
//- rjf: undo/redo history
|
//- rjf: undo/redo history
|
||||||
|
|
||||||
internal DF_StateDeltaHistory *
|
internal DF_StateDeltaHistory *
|
||||||
@@ -6776,6 +6813,10 @@ df_core_init(CmdLine *cmdln, DF_StateDeltaHistory *hist)
|
|||||||
Arena *arena = arena_alloc();
|
Arena *arena = arena_alloc();
|
||||||
df_state = push_array(arena, DF_State, 1);
|
df_state = push_array(arena, DF_State, 1);
|
||||||
df_state->arena = arena;
|
df_state->arena = arena;
|
||||||
|
for(U64 idx = 0; idx < ArrayCount(df_state->frame_arenas); idx += 1)
|
||||||
|
{
|
||||||
|
df_state->frame_arenas[idx] = arena_alloc();
|
||||||
|
}
|
||||||
df_state->root_cmd_arena = arena_alloc();
|
df_state->root_cmd_arena = arena_alloc();
|
||||||
df_state->output_log_key = hs_hash_from_data(str8_lit("df_output_log_key"));
|
df_state->output_log_key = hs_hash_from_data(str8_lit("df_output_log_key"));
|
||||||
df_state->entities_arena = arena_alloc__sized(GB(64), KB(64));
|
df_state->entities_arena = arena_alloc__sized(GB(64), KB(64));
|
||||||
@@ -6936,8 +6977,11 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
|||||||
{
|
{
|
||||||
ProfBeginFunction();
|
ProfBeginFunction();
|
||||||
df_state->frame_index += 1;
|
df_state->frame_index += 1;
|
||||||
|
arena_clear(df_frame_arena());
|
||||||
df_state->dt = dt;
|
df_state->dt = dt;
|
||||||
df_state->time_in_seconds += dt;
|
df_state->time_in_seconds += dt;
|
||||||
|
df_state->top_interact_regs = &df_state->base_interact_regs;
|
||||||
|
MemoryZeroStruct(df_state->top_interact_regs);
|
||||||
|
|
||||||
//- rjf: sync with ctrl thread
|
//- rjf: sync with ctrl thread
|
||||||
ProfScope("sync with ctrl thread")
|
ProfScope("sync with ctrl thread")
|
||||||
|
|||||||
@@ -1762,13 +1762,16 @@ internal DF_EvalVizRow *df_eval_viz_row_list_push_new(Arena *arena, EVAL_ParseCt
|
|||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Main State Accessors/Mutators
|
//~ rjf: Main State Accessors/Mutators
|
||||||
|
|
||||||
//- rjf: frame metadata
|
//- rjf: frame data
|
||||||
internal F32 df_dt(void);
|
internal F32 df_dt(void);
|
||||||
internal U64 df_frame_index(void);
|
internal U64 df_frame_index(void);
|
||||||
|
internal Arena *df_frame_arena(void);
|
||||||
internal F64 df_time_in_seconds(void);
|
internal F64 df_time_in_seconds(void);
|
||||||
|
|
||||||
//- rjf: interaction registers
|
//- rjf: interaction registers
|
||||||
internal DF_InteractRegs *df_interact_regs(void);
|
internal DF_InteractRegs *df_interact_regs(void);
|
||||||
|
internal DF_InteractRegs *df_push_interact_regs(void);
|
||||||
|
internal DF_InteractRegs *df_pop_interact_regs(void);
|
||||||
|
|
||||||
//- rjf: undo/redo history
|
//- rjf: undo/redo history
|
||||||
internal DF_StateDeltaHistory *df_state_delta_history(void);
|
internal DF_StateDeltaHistory *df_state_delta_history(void);
|
||||||
|
|||||||
Reference in New Issue
Block a user