Moving corners like intended

This commit is contained in:
Synthasmagoria 2026-08-25 18:38:56 +02:00
commit 6bd838968d
4 changed files with 114 additions and 19 deletions

View file

@ -11,6 +11,7 @@ ANIMATION_COLOR_ORIGIN :: rl.RED
ANIMATION_COLOR_END :: rl.BLUE
RectangleCorners :: struct {tl, tr, br, bl: v2}
RectangleCornersCorner :: enum {Tl, Tr, Br, Bl}
rectangle_corners_from_rect :: proc "contextless" (rect: rect2) -> RectangleCorners {
return {
@ -39,6 +40,53 @@ rectangle_corners_lerp :: proc "contextless" (a, b: RectangleCorners, t: f32) ->
}
}
rectangle_corners_move_corner :: proc "contextless" (corners: RectangleCorners, position: v2, corner: RectangleCornersCorner) -> RectangleCorners {
corners := corners
switch corner {
case .Tl:
corners = _rectangle_corners_move_corner_resolve_tl(corners, position)
case .Tr:
corners = _rectangle_corners_move_corner_resolve_tr(corners, position)
case .Br:
corners = _rectangle_corners_move_corner_resolve_br(corners, position)
case .Bl:
corners = _rectangle_corners_move_corner_resolve_bl(corners, position)
}
return corners
}
_rectangle_corners_move_corner_resolve_tl :: proc "contextless" (corners: RectangleCorners, position: v2) -> RectangleCorners {
corners := corners
corners.tl = position
corners.bl.x = position.x
corners.tr.y = position.y
return corners
}
_rectangle_corners_move_corner_resolve_tr :: proc "contextless" (corners: RectangleCorners, position: v2) -> RectangleCorners {
corners := corners
corners.tr = position
corners.br.x = position.x
corners.tl.y = position.y
return corners
}
_rectangle_corners_move_corner_resolve_br :: proc "contextless" (corners: RectangleCorners, position: v2) -> RectangleCorners {
corners := corners
corners.br = position
corners.tr.x = position.x
corners.bl.y = position.y
return corners
}
_rectangle_corners_move_corner_resolve_bl :: proc "contextless" (corners: RectangleCorners, position: v2) -> RectangleCorners {
corners := corners
corners.bl = position
corners.tl.x = position.x
corners.br.y = position.y
return corners
}
rectangle_corners_transform_mat2 :: proc "contextless" (corners: RectangleCorners, transform: mat2) -> RectangleCorners {
return {corners.tl * transform, corners.tr * transform, corners.br * transform, corners.bl * transform}
}