Files
Polonium/src/Scenes/CameraScene.cs
2025-02-09 01:07:12 +00:00

31 lines
880 B
C#

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<Camera2D>("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;
}