From 96a64077bf3c883f21798c851e63e00b991f4135 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 21 Nov 2022 01:42:57 -0300 Subject: [PATCH] create camera script to report it's current viewport via the event bus --- scenes/player/Camera.cs | 20 ++++++++++++++++++++ scripts/Event.cs | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 scenes/player/Camera.cs diff --git a/scenes/player/Camera.cs b/scenes/player/Camera.cs new file mode 100644 index 0000000..624db51 --- /dev/null +++ b/scenes/player/Camera.cs @@ -0,0 +1,20 @@ +using Godot; +using System; + +public class Camera : Camera2D +{ + private Event _event; + + public override void _Ready() + { + _event = GetNode("/root/Event"); + } + + public override void _PhysicsProcess(float delta) + { + var rect = GetViewportRect(); + var owner = (Node2D) Owner; + rect.Position = owner.Position - rect.Size / 2; + _event.EmitSignal("CameraView", rect); + } +} diff --git a/scripts/Event.cs b/scripts/Event.cs index 125cedc..96535ad 100644 --- a/scripts/Event.cs +++ b/scripts/Event.cs @@ -14,4 +14,6 @@ public sealed class Event : Node delegate void PlayerTouched(); [Signal] delegate void DebugState(string state); + [Signal] + delegate void CameraView(Rect2 rect); }