matrix move
This commit is contained in:
parent
dd4bbd3030
commit
8e9b468509
1 changed files with 26 additions and 44 deletions
70
program.odin
70
program.odin
|
|
@ -311,9 +311,7 @@ program_get_master_matrix :: proc() -> mat3 {
|
||||||
}
|
}
|
||||||
|
|
||||||
program_set_transformation_state :: proc(state: AnimationState) {
|
program_set_transformation_state :: proc(state: AnimationState) {
|
||||||
if program.animation_state == state {
|
if program.animation_state == state do return
|
||||||
return
|
|
||||||
}
|
|
||||||
previous_state := program.animation_state
|
previous_state := program.animation_state
|
||||||
program.animation_state = state
|
program.animation_state = state
|
||||||
switch program.animation_state {
|
switch program.animation_state {
|
||||||
|
|
@ -671,9 +669,7 @@ program_render_ui_and_handle_focus :: proc(ctx: ^ui.Context, focus_element_id: u
|
||||||
}
|
}
|
||||||
case .Button:
|
case .Button:
|
||||||
if (rl.GuiButton(area, element.label)) {
|
if (rl.GuiButton(area, element.label)) {
|
||||||
if element.data == nil {
|
if element.data == nil do break
|
||||||
break
|
|
||||||
}
|
|
||||||
data := cast(^UiElementData_Button)element.data
|
data := cast(^UiElementData_Button)element.data
|
||||||
switch data.type {
|
switch data.type {
|
||||||
case .Nothing:
|
case .Nothing:
|
||||||
|
|
@ -726,45 +722,11 @@ program_render_ui_and_handle_focus :: proc(ctx: ^ui.Context, focus_element_id: u
|
||||||
}
|
}
|
||||||
program.matrix_count = max(program.matrix_count - 1, 0)
|
program.matrix_count = max(program.matrix_count - 1, 0)
|
||||||
case .MatrixMoveUp:
|
case .MatrixMoveUp:
|
||||||
if data.target_matrix <= 0 {
|
if data.target_matrix <= 0 do break;
|
||||||
break;
|
matrix_move_to(program.matrix_float_pool, program.matrix_value_string_pool, data.target_matrix, data.target_matrix - 1)
|
||||||
}
|
|
||||||
floats := program.matrix_float_pool
|
|
||||||
inputs := program.matrix_value_string_pool
|
|
||||||
floats_values_size := size_of(f32) * 9
|
|
||||||
inputs_buffer_size := size_of(InputFloatField) * 9
|
|
||||||
floats_moving_matrix := &floats[data.target_matrix * 9]
|
|
||||||
inputs_moving_matrix := &inputs[data.target_matrix * 9][0]
|
|
||||||
floats_moved_to_matrix := &floats[data.target_matrix * 9 - 9]
|
|
||||||
inputs_moved_to_matrix := &inputs[data.target_matrix * 9 - 9][0]
|
|
||||||
floats_temp := [9]f32{}
|
|
||||||
inputs_temp := [9]InputFloatField{}
|
|
||||||
mem.copy(&floats_temp[0], floats_moving_matrix, floats_values_size)
|
|
||||||
mem.copy(&inputs_temp[0][0], inputs_moving_matrix, inputs_buffer_size)
|
|
||||||
mem.copy(floats_moving_matrix, floats_moved_to_matrix, floats_values_size)
|
|
||||||
mem.copy(inputs_moving_matrix, inputs_moved_to_matrix, inputs_buffer_size)
|
|
||||||
mem.copy(floats_moved_to_matrix, &floats_temp[0], floats_values_size)
|
|
||||||
mem.copy(inputs_moved_to_matrix, &inputs_temp[0][0], inputs_buffer_size)
|
|
||||||
case .MatrixMoveDown:
|
case .MatrixMoveDown:
|
||||||
if data.target_matrix + 1 >= program.matrix_count {
|
if data.target_matrix + 1 >= program.matrix_count do break;
|
||||||
break;
|
matrix_move_to(program.matrix_float_pool, program.matrix_value_string_pool, data.target_matrix, data.target_matrix + 1)
|
||||||
}
|
|
||||||
floats := program.matrix_float_pool
|
|
||||||
inputs := program.matrix_value_string_pool
|
|
||||||
floats_values_size := size_of(f32) * 9
|
|
||||||
inputs_buffer_size := size_of(InputFloatField) * 9
|
|
||||||
floats_moving_matrix := &floats[data.target_matrix * 9]
|
|
||||||
inputs_moving_matrix := &inputs[data.target_matrix * 9][0]
|
|
||||||
floats_moved_to_matrix := &floats[data.target_matrix * 9 + 9]
|
|
||||||
inputs_moved_to_matrix := &inputs[data.target_matrix * 9 + 9][0]
|
|
||||||
floats_temp := [9]f32{}
|
|
||||||
inputs_temp := [9]InputFloatField{}
|
|
||||||
mem.copy(&floats_temp[0], floats_moving_matrix, floats_values_size)
|
|
||||||
mem.copy(&inputs_temp[0][0], inputs_moving_matrix, inputs_buffer_size)
|
|
||||||
mem.copy(floats_moving_matrix, floats_moved_to_matrix, floats_values_size)
|
|
||||||
mem.copy(inputs_moving_matrix, inputs_moved_to_matrix, inputs_buffer_size)
|
|
||||||
mem.copy(floats_moved_to_matrix, &floats_temp[0], floats_values_size)
|
|
||||||
mem.copy(inputs_moved_to_matrix, &inputs_temp[0][0], inputs_buffer_size)
|
|
||||||
}
|
}
|
||||||
if data.type in UiButtonRecalculateFinishGroup {
|
if data.type in UiButtonRecalculateFinishGroup {
|
||||||
animation_update_last(&program.animation, program_get_master_matrix())
|
animation_update_last(&program.animation, program_get_master_matrix())
|
||||||
|
|
@ -830,6 +792,26 @@ program_render_ui_and_handle_focus :: proc(ctx: ^ui.Context, focus_element_id: u
|
||||||
return focus_element_id
|
return focus_element_id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
matrix_move_to :: proc(floats: []f32, inputs: []InputFloatField, from, to: int) {
|
||||||
|
if from == to do return
|
||||||
|
floats := program.matrix_float_pool
|
||||||
|
inputs := program.matrix_value_string_pool
|
||||||
|
floats_values_size := size_of(f32) * 9
|
||||||
|
inputs_buffer_size := size_of(InputFloatField) * 9
|
||||||
|
floats_moving_matrix := &floats[from * 9]
|
||||||
|
inputs_moving_matrix := &inputs[from * 9][0]
|
||||||
|
floats_moved_to_matrix := &floats[to * 9]
|
||||||
|
inputs_moved_to_matrix := &inputs[to * 9][0]
|
||||||
|
floats_temp := [9]f32{}
|
||||||
|
inputs_temp := [9]InputFloatField{}
|
||||||
|
mem.copy(&floats_temp[0], floats_moving_matrix, floats_values_size)
|
||||||
|
mem.copy(&inputs_temp[0][0], inputs_moving_matrix, inputs_buffer_size)
|
||||||
|
mem.copy(floats_moving_matrix, floats_moved_to_matrix, floats_values_size)
|
||||||
|
mem.copy(inputs_moving_matrix, inputs_moved_to_matrix, inputs_buffer_size)
|
||||||
|
mem.copy(floats_moved_to_matrix, &floats_temp[0], floats_values_size)
|
||||||
|
mem.copy(inputs_moved_to_matrix, &inputs_temp[0][0], inputs_buffer_size)
|
||||||
|
}
|
||||||
|
|
||||||
ui_add_matrix_footer_buttons :: proc(button_type_add: UiButtonType, margin: f32) {
|
ui_add_matrix_footer_buttons :: proc(button_type_add: UiButtonType, margin: f32) {
|
||||||
button_data: ^UiElementData_Button
|
button_data: ^UiElementData_Button
|
||||||
button_data = new(UiElementData_Button, context.temp_allocator)
|
button_data = new(UiElementData_Button, context.temp_allocator)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue