fix: has_point() is exclusive of right-/bottom-edge, so we need to account for that
This commit is contained in:
committed by
Julian Murgia
parent
e4bb111cb9
commit
4a6f02b7ae
@@ -55,11 +55,13 @@ func validate(arguments: Array):
|
|||||||
)
|
)
|
||||||
return false
|
return false
|
||||||
|
|
||||||
var target_pos = (escoria.object_manager.get_object(arguments[0]).node as ESCItem).global_position
|
var target_pos = (escoria.object_manager.get_object(arguments[0]).node as ESCItem).global_position + Vector2.ONE
|
||||||
var camera: ESCCamera = escoria.object_manager.get_object(escoria.object_manager.CAMERA).node as ESCCamera
|
var camera: ESCCamera = escoria.object_manager.get_object(escoria.object_manager.CAMERA).node as ESCCamera
|
||||||
|
# has_point() is exclusive of right-/bottom-edge
|
||||||
|
var camera_limit_to_test: Rect2 = Rect2(camera.limit_left, camera.limit_top, camera.limit_right - camera.limit_left + 1, camera.limit_bottom - camera.limit_top + 1)
|
||||||
var camera_limit: Rect2 = Rect2(camera.limit_left, camera.limit_top, camera.limit_right - camera.limit_left, camera.limit_bottom - camera.limit_top)
|
var camera_limit: Rect2 = Rect2(camera.limit_left, camera.limit_top, camera.limit_right - camera.limit_left, camera.limit_bottom - camera.limit_top)
|
||||||
|
|
||||||
if not camera_limit.has_point(target_pos):
|
if not camera_limit_to_test.has_point(target_pos):
|
||||||
escoria.logger.warn(
|
escoria.logger.warn(
|
||||||
self,
|
self,
|
||||||
"[%s]: invalid camera position. Camera cannot be moved to %s at position %s as this is outside the current camera limit %s."
|
"[%s]: invalid camera position. Camera cannot be moved to %s at position %s as this is outside the current camera limit %s."
|
||||||
|
|||||||
@@ -31,9 +31,11 @@ func validate(arguments: Array):
|
|||||||
|
|
||||||
var new_pos: Vector2 = Vector2(arguments[1], arguments[2])
|
var new_pos: Vector2 = Vector2(arguments[1], arguments[2])
|
||||||
var camera: ESCCamera = escoria.object_manager.get_object(escoria.object_manager.CAMERA).node as ESCCamera
|
var camera: ESCCamera = escoria.object_manager.get_object(escoria.object_manager.CAMERA).node as ESCCamera
|
||||||
|
# has_point() is exclusive of right-/bottom-edge
|
||||||
|
var camera_limit_to_test: Rect2 = Rect2(camera.limit_left, camera.limit_top, camera.limit_right - camera.limit_left + 1, camera.limit_bottom - camera.limit_top + 1)
|
||||||
var camera_limit: Rect2 = Rect2(camera.limit_left, camera.limit_top, camera.limit_right - camera.limit_left, camera.limit_bottom - camera.limit_top)
|
var camera_limit: Rect2 = Rect2(camera.limit_left, camera.limit_top, camera.limit_right - camera.limit_left, camera.limit_bottom - camera.limit_top)
|
||||||
|
|
||||||
if not camera_limit.has_point(new_pos):
|
if not camera_limit_to_test.has_point(new_pos):
|
||||||
escoria.logger.warn(
|
escoria.logger.warn(
|
||||||
self,
|
self,
|
||||||
"[%s]: invalid camera position. Camera cannot be moved to %s as this is outside the current camera limit %s."
|
"[%s]: invalid camera position. Camera cannot be moved to %s as this is outside the current camera limit %s."
|
||||||
|
|||||||
@@ -76,11 +76,13 @@ func validate(arguments: Array):
|
|||||||
return false
|
return false
|
||||||
|
|
||||||
var camera: ESCCamera = escoria.object_manager.get_object(escoria.object_manager.CAMERA).node as ESCCamera
|
var camera: ESCCamera = escoria.object_manager.get_object(escoria.object_manager.CAMERA).node as ESCCamera
|
||||||
|
# has_point() is exclusive of right-/bottom-edge
|
||||||
|
var camera_limit_to_test: Rect2 = Rect2(camera.limit_left, camera.limit_top, camera.limit_right - camera.limit_left + 1, camera.limit_bottom - camera.limit_top + 1)
|
||||||
var camera_limit: Rect2 = Rect2(camera.limit_left, camera.limit_top, camera.limit_right - camera.limit_left, camera.limit_bottom - camera.limit_top)
|
var camera_limit: Rect2 = Rect2(camera.limit_left, camera.limit_top, camera.limit_right - camera.limit_left, camera.limit_bottom - camera.limit_top)
|
||||||
var shift_by: Vector2 = Vector2(arguments[0], arguments[1])
|
var shift_by: Vector2 = Vector2(arguments[0], arguments[1])
|
||||||
var new_pos: Vector2 = Vector2(camera.position.x + shift_by.x, camera.position.y + shift_by.y)
|
var new_pos: Vector2 = Vector2(camera.position.x + shift_by.x, camera.position.y + shift_by.y)
|
||||||
|
|
||||||
if not camera_limit.has_point(new_pos):
|
if not camera_limit_to_test.has_point(new_pos):
|
||||||
escoria.logger.warn(
|
escoria.logger.warn(
|
||||||
self,
|
self,
|
||||||
"[%s]: invalid camera position. Camera cannot be moved by %s to %s as this is outside the current camera limit %s."
|
"[%s]: invalid camera position. Camera cannot be moved by %s to %s as this is outside the current camera limit %s."
|
||||||
|
|||||||
Reference in New Issue
Block a user