Moving corners like intended
This commit is contained in:
parent
4918501712
commit
6bd838968d
4 changed files with 114 additions and 19 deletions
|
|
@ -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}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue