protoype world gen based on input image

This commit is contained in:
Antti Hakkarainen 2023-02-08 13:45:34 +02:00
parent acf1ed5423
commit 30ec55066b
11 changed files with 188 additions and 32 deletions

View file

@ -2,39 +2,40 @@
class_name CameraZoom2D
extends Camera2D
var _zoom_level : float = 1.0 : set = _set_zoom_level
var is_dragging_camera = false
var is_panning_camera = false
var tween
func _set_zoom_level(value: float) -> void:
_zoom_level = clamp(value, Globals.CAMERA_MIN_ZOOM_LEVEL, Globals.CAMERA_MAX_ZOOM_LEVEL)
func _set_camera_zoom_level(value: float) -> void:
Globals.CAMERA_ZOOM_LEVEL = clamp(value, Globals.CAMERA_MIN_ZOOM_LEVEL, Globals.CAMERA_MAX_ZOOM_LEVEL)
#interpolate frames between zoom levels to make zooming look smoother
tween = get_tree().create_tween()
tween.tween_property(
self,
"zoom",
Vector2(_zoom_level, _zoom_level),
Vector2(Globals.CAMERA_ZOOM_LEVEL, Globals.CAMERA_ZOOM_LEVEL),
Globals.CAMERA_ZOOM_DURATION
)
func camera_zoom_in() -> void:
_set_camera_zoom_level(Globals.CAMERA_ZOOM_LEVEL - Globals.CAMERA_ZOOM_FACTOR)
func _unhandled_input(event):
# camera zooming
if event.is_action_pressed("camera_zoom_in"):
_set_zoom_level(_zoom_level - Globals.CAMERA_ZOOM_FACTOR)
elif event.is_action_pressed("camera_zoom_out"):
_set_zoom_level(_zoom_level + Globals.CAMERA_ZOOM_DURATION)
func camera_zoom_out() -> void:
_set_camera_zoom_level(Globals.CAMERA_ZOOM_LEVEL + Globals.CAMERA_ZOOM_DURATION)
# camera dragging
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT:
if !is_dragging_camera and event.pressed:
is_dragging_camera = true
if is_dragging_camera and !event.pressed:
is_dragging_camera = false
if event is InputEventMouseMotion and is_dragging_camera:
if self.position != event.position:
tween = get_tree().create_tween()
tween.tween_property(self, "property", Vector2(self.position, event.position), Globals.CAMERA_ZOOM_DURATION)
else:
self.position = event.position * Globals.CAMERA_DRAG_MULTI
func _unhandled_input(event):
if event.is_action_pressed("camera_zoom_in"):
camera_zoom_in()
if event.is_action_pressed("camera_zoom_out"):
camera_zoom_out()
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT:
if !is_panning_camera and event.pressed:
is_panning_camera = true
if is_panning_camera and !event.pressed:
is_panning_camera = false
if event is InputEventMouseMotion and is_panning_camera:
self.position -= event.relative * Globals.CAMERA_PAN_MULTI