using Godot; using Polonium.Attributes; // ReSharper disable once CheckNamespace namespace GlobalClasses; [ProxyNode] [GlobalClass] [Tool] public partial class CameraScene : Scene { private Camera2D Camera { get; set; } public float MaxZoom { get; set; } public float MinZoom { get; set; } public float ZoomRate { get; set; } private float Zoom { get => Camera.Zoom.X; set => Camera.Zoom = value * Vector2.One; } [ProxyMethod] public virtual void __Ready() { } public sealed override void _Ready() { Camera = GetNode("Camera"); __Ready(); 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; }