From af83dc658c3c61bdc8e8b18a1bcde646e748f02c Mon Sep 17 00:00:00 2001 From: Jason Kuo Date: Mon, 30 Dec 2024 14:11:11 +0800 Subject: [PATCH] CameraFeed: Add `set_format` and `get_formats` virtual binds --- doc/classes/CameraFeed.xml | 14 ++++++++++++++ servers/camera/camera_feed.cpp | 10 ++++++++-- servers/camera/camera_feed.h | 2 ++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/doc/classes/CameraFeed.xml b/doc/classes/CameraFeed.xml index 7623ae3ed86..0d3c5290fce 100644 --- a/doc/classes/CameraFeed.xml +++ b/doc/classes/CameraFeed.xml @@ -23,6 +23,20 @@ Called when the camera feed is deactivated. + + + + Override this method to define supported formats of the camera feed. + + + + + + + + Override this method to set the format of the camera feed. + + diff --git a/servers/camera/camera_feed.cpp b/servers/camera/camera_feed.cpp index 2b7d28558d5..fcd29bd44d2 100644 --- a/servers/camera/camera_feed.cpp +++ b/servers/camera/camera_feed.cpp @@ -61,6 +61,8 @@ void CameraFeed::_bind_methods() { GDVIRTUAL_BIND(_activate_feed); GDVIRTUAL_BIND(_deactivate_feed); + GDVIRTUAL_BIND(_set_format, "index", "parameters"); + GDVIRTUAL_BIND(_get_formats); ADD_SIGNAL(MethodInfo("frame_changed")); ADD_SIGNAL(MethodInfo("format_changed")); @@ -309,11 +311,15 @@ void CameraFeed::deactivate_feed() { } bool CameraFeed::set_format(int p_index, const Dictionary &p_parameters) { - return false; + bool ret = false; + GDVIRTUAL_CALL(_set_format, p_index, p_parameters, ret); + return ret; } Array CameraFeed::get_formats() const { - return Array(); + Array ret; + GDVIRTUAL_CALL(_get_formats, ret); + return ret; } CameraFeed::FeedFormat CameraFeed::get_format() const { diff --git a/servers/camera/camera_feed.h b/servers/camera/camera_feed.h index 73725f233a1..1edefd53f8c 100644 --- a/servers/camera/camera_feed.h +++ b/servers/camera/camera_feed.h @@ -124,6 +124,8 @@ public: virtual bool activate_feed(); virtual void deactivate_feed(); + GDVIRTUAL2R(bool, _set_format, int, const Dictionary &); + GDVIRTUAL0RC(Array, _get_formats); GDVIRTUAL0R(bool, _activate_feed) GDVIRTUAL0(_deactivate_feed) };