Fix final animation
This commit is contained in:
parent
ef350183e2
commit
02fd60e67d
6 changed files with 29 additions and 8 deletions
BIN
default
BIN
default
Binary file not shown.
|
|
@ -226,13 +226,15 @@ animation_draw :: proc(animation: Animation, global_transform: mat3, temp_alloca
|
||||||
color := linalg.lerp(color_origin, color_end, f32(i) / f32(animation.matrix_count))
|
color := linalg.lerp(color_origin, color_end, f32(i) / f32(animation.matrix_count))
|
||||||
draw_animation_rectangle_corners(rectangle, rl.Color(color))
|
draw_animation_rectangle_corners(rectangle, rl.Color(color))
|
||||||
}
|
}
|
||||||
|
if animation.matrix_count <= 0 {
|
||||||
animation_progress := math.clamp(animation.matrix_index, 0.0, f32(animation.matrix_count - 1))
|
break
|
||||||
|
}
|
||||||
|
animation_progress := math.clamp(animation.matrix_index, 0.0, f32(animation.matrix_count))
|
||||||
animation_progress_frame := ease.ease(animation.ease, fract(animation.matrix_index))
|
animation_progress_frame := ease.ease(animation.ease, fract(animation.matrix_index))
|
||||||
animation_progress_total := animation_progress + animation_progress_frame
|
animation_progress_total := animation_progress + animation_progress_frame
|
||||||
animation_progress_fraction := animation_progress_total / f32(animation.matrix_count)
|
animation_progress_fraction := animation_progress_total / f32(animation.matrix_count)
|
||||||
rectangle_previous := rectangles[i32(animation_progress)]
|
rectangle_previous := rectangles[int(animation_progress)]
|
||||||
rectangle_next := rectangles[i32(animation_progress + 1)]
|
rectangle_next := rectangles[min(int(animation_progress + 1), animation.matrix_count)]
|
||||||
rectangle_current := rectangle_corners_lerp(rectangle_previous, rectangle_next, animation_progress_frame)
|
rectangle_current := rectangle_corners_lerp(rectangle_previous, rectangle_next, animation_progress_frame)
|
||||||
rectangle_current_color := linalg.lerp(color_origin, color_end, animation_progress_fraction)
|
rectangle_current_color := linalg.lerp(color_origin, color_end, animation_progress_fraction)
|
||||||
draw_animation_rectangle_corners(rectangle_current, rl.Color(rectangle_current_color))
|
draw_animation_rectangle_corners(rectangle_current, rl.Color(rectangle_current_color))
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import rl "libraries/raylib"
|
||||||
|
|
||||||
Grid :: struct {
|
Grid :: struct {
|
||||||
cell_size_px: v2,
|
cell_size_px: v2,
|
||||||
zoom_previous, zoom: v2,
|
zoom: v2,
|
||||||
offset: v2,
|
offset: v2,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,7 @@ UiButtonType :: enum {
|
||||||
PauseTransformation,
|
PauseTransformation,
|
||||||
ResumeTransformation,
|
ResumeTransformation,
|
||||||
ResetTransformation,
|
ResetTransformation,
|
||||||
|
ResetGrid,
|
||||||
MatrixDelete,
|
MatrixDelete,
|
||||||
MatrixMoveUp,
|
MatrixMoveUp,
|
||||||
MatrixMoveDown,
|
MatrixMoveDown,
|
||||||
|
|
@ -336,6 +337,8 @@ program_save_project :: proc(program: ^Program, path: string) -> ProjectWriteErr
|
||||||
project := ProjectData {
|
project := ProjectData {
|
||||||
matrix_count = u32(program.matrix_count),
|
matrix_count = u32(program.matrix_count),
|
||||||
matrices = program.matrix_float_pool,
|
matrices = program.matrix_float_pool,
|
||||||
|
grid = program.grid,
|
||||||
|
shapes = program.animation.shapes,
|
||||||
}
|
}
|
||||||
project_write(&project, path) or_return
|
project_write(&project, path) or_return
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -360,6 +363,8 @@ program_load_project :: proc(program: ^Program, path: string) -> ProjectReadErro
|
||||||
project.matrices = program.matrix_float_pool
|
project.matrices = program.matrix_float_pool
|
||||||
project_read(&project, path) or_return
|
project_read(&project, path) or_return
|
||||||
program.matrix_count = int(project.matrix_count)
|
program.matrix_count = int(project.matrix_count)
|
||||||
|
program.grid = project.grid
|
||||||
|
program.animation.shapes = project.shapes
|
||||||
for val, i in program.matrix_float_pool[:program.matrix_count * 9] {
|
for val, i in program.matrix_float_pool[:program.matrix_count * 9] {
|
||||||
fmt.bprint(program.matrix_value_string_pool[i][:], val)
|
fmt.bprint(program.matrix_value_string_pool[i][:], val)
|
||||||
}
|
}
|
||||||
|
|
@ -818,6 +823,12 @@ program_build_workspace_ui :: proc(ctx: ^ui.Context) -> (elements: []ui.Element,
|
||||||
ui.same_line()
|
ui.same_line()
|
||||||
ui.element(.Button, button_dimensions, button_config, button_data)
|
ui.element(.Button, button_dimensions, button_config, button_data)
|
||||||
|
|
||||||
|
button_config = {margin = button_margin, label = RAYGUI_ICON_RESET, tooltip = "Reset\ngrid"}
|
||||||
|
button_data = new(UiElementData_Button, context.temp_allocator)
|
||||||
|
button_data^ = {type = .ResetGrid}
|
||||||
|
ui.same_line()
|
||||||
|
ui.element(.Button, button_dimensions, button_config, button_data)
|
||||||
|
|
||||||
button_config = {margin = button_margin, label = "1", tooltip = "Center\nanimation"}
|
button_config = {margin = button_margin, label = "1", tooltip = "Center\nanimation"}
|
||||||
button_data = new(UiElementData_Button, context.temp_allocator)
|
button_data = new(UiElementData_Button, context.temp_allocator)
|
||||||
button_data^ = {type = .CenterView}
|
button_data^ = {type = .CenterView}
|
||||||
|
|
@ -1089,6 +1100,10 @@ program_render_ui_and_handle_focus :: proc(ctx: ^ui.Context, focus_element_id: u
|
||||||
case .ProjectLoad:
|
case .ProjectLoad:
|
||||||
program_show_dialog(&program, .LoadProject)
|
program_show_dialog(&program, .LoadProject)
|
||||||
case .ProjectNew:
|
case .ProjectNew:
|
||||||
|
case .ResetGrid:
|
||||||
|
program.grid.offset = program_screen_size() / 2.0
|
||||||
|
program.grid.zoom = 1.0
|
||||||
|
program.grid.cell_size_px = 50.0
|
||||||
case .DismissError:
|
case .DismissError:
|
||||||
program.state = .Normal
|
program.state = .Normal
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ ProjectData :: struct {
|
||||||
matrix_count: u32,
|
matrix_count: u32,
|
||||||
matrices: []f32,
|
matrices: []f32,
|
||||||
grid: Grid,
|
grid: Grid,
|
||||||
animation: Animation,
|
shapes: AnimationShapes,
|
||||||
}
|
}
|
||||||
|
|
||||||
project_write :: proc(project: ^ProjectData, path: string) -> ProjectWriteError {
|
project_write :: proc(project: ^ProjectData, path: string) -> ProjectWriteError {
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,9 @@ _project_write :: proc(project: ^ProjectData, path: string) -> ProjectWriteError
|
||||||
io.write_full(w, transmute([]u8)header) or_return
|
io.write_full(w, transmute([]u8)header) or_return
|
||||||
io.write_ptr(w, &version, size_of(version)) or_return
|
io.write_ptr(w, &version, size_of(version)) or_return
|
||||||
io.write_ptr(w, &project.matrix_count, size_of(project.matrix_count)) or_return
|
io.write_ptr(w, &project.matrix_count, size_of(project.matrix_count)) or_return
|
||||||
n := io.write_ptr(w, raw_data(project.matrices), int(project.matrix_count) * 9 * size_of(f32)) or_return
|
_ = io.write_ptr(w, raw_data(project.matrices), int(project.matrix_count) * 9 * size_of(f32)) or_return
|
||||||
|
_ = io.write_ptr(w, &project.grid, size_of(project.grid)) or_return
|
||||||
|
_ = io.write_ptr(w, &project.shapes, size_of(project.shapes)) or_return
|
||||||
os.close(f)
|
os.close(f)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -56,6 +58,8 @@ _project_read :: proc(project: ^ProjectData, path: string) -> ProjectReadError {
|
||||||
return ProjectReadErrorType.VersionNeedsUpgrade
|
return ProjectReadErrorType.VersionNeedsUpgrade
|
||||||
}
|
}
|
||||||
_ = io.read_ptr(r, &project.matrix_count, size_of(project.matrix_count)) or_return
|
_ = io.read_ptr(r, &project.matrix_count, size_of(project.matrix_count)) or_return
|
||||||
n := io.read_ptr(r, raw_data(project.matrices), size_of(f32) * len(project.matrices)) or_return
|
_ = io.read_ptr(r, raw_data(project.matrices), size_of(f32) * int(project.matrix_count) * 9) or_return
|
||||||
|
_ = io.read_ptr(r, &project.grid, size_of(project.grid)) or_return
|
||||||
|
_ = io.read_ptr(r, &project.shapes, size_of(project.shapes)) or_return
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue