using Godot; using Polonium.Attributes; namespace Polonium.Scenes; [ProxyNode] public partial class CameraScene : Scene { private Camera2D Camera { get; set; } [Export(PropertyHint.Range)] public float MaxZoom { get; set; } [Export(PropertyHint.Range)] public float MinZoom { get; set; } [Export(PropertyHint.Range)] public float ZoomRate { get; set; } [Export(PropertyHint.Range)] private float Zoom { get => Camera.Zoom.X; set => Camera.Zoom = value * Vector2.One; } public override void _Ready() { Camera = GetNode("Camera"); base._Ready(); } protected void ZoomIn() => Zoom = Mathf.Max(Zoom * (1 + ZoomRate), MaxZoom); protected void ZoomOut() => Zoom = Mathf.Min(Zoom * (1 - ZoomRate), MinZoom); protected void ZoomAt(Vector2 pos) => Camera.Position = pos; }