Fixed a bad reference

This commit is contained in:
Synthasmagoria 2026-07-24 12:57:44 +02:00
commit a2a70a0f33
6 changed files with 43 additions and 12 deletions

1
.gitignore vendored
View file

@ -2,3 +2,4 @@ build
cscope.out
cscope.in.out
cscope.po.out
transformation_visualizer

View file

@ -2,6 +2,6 @@
OUT_DIR="build/desktop"
mkdir -p $OUT_DIR
odin build . -strict-style -out:$OUT_DIR/game_desktop.bin -no-bounds-check -disable-assert -o:size -extra-linker-flags:"-Wl,--gc-sections,-s"
odin build . -out:$OUT_DIR/game -no-bounds-check -disable-assert -o:size -extra-linker-flags:"-Wl,--gc-sections,-s"
cp -R ./assets/ ./$OUT_DIR/
echo "Desktop build created in ${OUT_DIR}"

View file

@ -1,14 +1,13 @@
package adb_pool
Pool :: struct($T: typeid) {
pool: []T,
usage, capacity: int,
pool: []T,
usage: int,
}
init :: proc(pool: ^Pool($T), capacity: int, allocator := context.allocator) {
pool.pool = make([]T, capacity, allocator)
pool.usage = 0
pool.capacity = capacity
}
elems_available :: proc(pool: ^Pool($T), capacity: int) -> bool {
@ -16,7 +15,9 @@ elems_available :: proc(pool: ^Pool($T), capacity: int) -> bool {
}
get :: proc(pool: ^Pool($T), count: int) -> []T {
elements := pool.pool[pool.usage:pool.usage + count]
range_to := pool.usage + count
assert(range_to <= len(pool.pool), "pool.get count reaches outside preallocated size")
elements := pool.pool[pool.usage:]
pool.usage += count
return elements
}

View file

@ -10,6 +10,9 @@ main :: proc() {
// os.set_working_directory(exe_dir)
rl.ChangeDirectory(rl.GetApplicationDirectory())
back.register_segfault_handler()
context.assertion_failure_proc = back.assertion_failure_proc
register_illegal_instruction_handler()
context.logger = log.create_console_logger()
init()

View file

@ -159,8 +159,8 @@ UiButton_AddMat4CallbackData :: struct {
}
program_add_mat4 :: proc(data: rawptr) {
data := cast(^UiButton_AddMat3CallbackData)data
field_pool_add_mat3(&data.program.matrix_field_pool, data.mat)
data := cast(^UiButton_AddMat4CallbackData)data
field_pool_add_mat4(&data.program.matrix_field_pool, data.mat)
}
field_pool_add_mat4 :: proc(pool: ^FieldPool(f32), m: mat4) {
@ -224,17 +224,38 @@ program_matrix_mode_dropdown_callback :: proc(previous, current: i32, data: rawp
program_set_message_state(program, .ChangeMatrixTypeClearData)
}
program_build_ui :: proc() -> []UiElement {
matrix_add_button_callback_data := UiButton_AddMat2CallbackData {
program = &program,
mat = mat2{0, 1, 2, 3},
program_add_matrix_button_data :: proc(label: cstring, matrix_type: MatrixType, allocator := context.temp_allocator) -> UiElementData_Button {
callback: UiElementCallback_Button
callback_data: rawptr
switch program.matrix_mode_actual {
case .Mat2:
callback = program_add_mat2
data := new(UiButton_AddMat2CallbackData, context.temp_allocator)
data^ = {program = &program, mat = mat2{0, 1, 2, 3}}
callback_data = cast(rawptr)data
case .Mat3:
callback = program_add_mat3
data := new(UiButton_AddMat3CallbackData, context.temp_allocator)
data^ = {program = &program, mat = mat3{0, 1, 2, 3, 4, 5, 6, 7, 8}}
callback_data = cast(rawptr)data
case .Mat4:
callback = program_add_mat4
data := new(UiButton_AddMat4CallbackData, context.temp_allocator)
data^ = {program = &program, mat = mat4{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}
callback_data = cast(rawptr)data
}
return {label = label, callback = callback, callback_data = callback_data}
}
program_build_ui :: proc() -> []UiElement {
ui_button_size_top_bar := v2{32.0, 32.0}
ui_dropdown_size_top_bar := v2{96.0, 32.0}
ui_start(&program.ui_state)
ui_container_begin({label = ""})
ui_button(ui_button_size_top_bar, {label = "#10#", callback = program_add_mat2, callback_data = cast(rawptr)&matrix_add_button_callback_data})
matrix_add_data := program_add_matrix_button_data("#10#", program.matrix_mode_actual, context.temp_allocator)
ui_button(ui_button_size_top_bar, matrix_add_data)
ui_same_line()
ui_button(ui_button_size_top_bar, {label = "#11#"})
ui_same_line()

5
signal_handler.odin Normal file
View file

@ -0,0 +1,5 @@
package main
register_illegal_instruction_handler :: proc() {
_register_illegal_instruction_handler()
}