Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func _ready():
- var viewport_size = Vector2(X,Y)
- var rect = Rect2(Vector2(),viewport_size) # intersect() probably will support rect position (as offset) later on
- var pos = Vector2(x,y) # first dot position
- var vec = -Vector2(-32,-16) # your vector, but negated
- var second_pos = intersect(rect,pos,vec)
- # do something with this second pos
- func intersect(rect,pos,vec):
- if rect.size==Vector2() or vec==Vector2():
- return pos
- var intersect = pos
- var v = vec.normalized()
- if (sign(v.x) == 0):
- if (sign(v.y) == -1): intersect.y = 0
- else: intersect.y = rect.size.y
- elif (sign(v.y) == 0):
- if (sign(v.x) == -1): intersect.x = 0
- else: intersect.x = rect.size.x
- else:
- var vmax = Vector2()
- if sign(v.x) == -1: vmax.x = (0-pos.x) / v.x
- else: vmax.x = (rect.size.x-pos.x) / v.x
- if sign(v.y) == -1: vmax.y = (0-pos.y) / v.y
- else: vmax.y = (rect.size.y-pos.y) / v.y
- if abs(vmax.x) < abs(vmax.y):
- intersect += v * vmax.x
- else:
- intersect += v * vmax.y
- return intersect
Add Comment
Please, Sign In to add comment