extends Camera3D const SCREEN_MARGIN : int = 150 @export var curve : Curve func _ready() -> void: curve.bake() func _process(_delta: float) -> void: var windowSize : Vector2i = get_window().size var mousePosition : Vector2 = get_viewport().get_mouse_position() if mousePosition.x < SCREEN_MARGIN: position.x += -0.05 if mousePosition.y < SCREEN_MARGIN: position.z += -0.05 if mousePosition.x > windowSize.x - SCREEN_MARGIN: position.x += 0.05 if mousePosition.y > windowSize.y - SCREEN_MARGIN: position.z += 0.05 func _input(event: InputEvent) -> void: if not event is InputEventMouseButton: return var newPosition : float = position.y if event.button_index == MOUSE_BUTTON_WHEEL_UP: newPosition = clampf(newPosition - .2, 2, 10) elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN: newPosition = clampf(newPosition + .2, 2, 10) rotation.x = deg_to_rad(curve.sample(newPosition)) position.y = newPosition