Skip to content

Commit 1559645

Browse files
committed
Merge pull request godotengine#98831 from dsnopek/openxr-gdextension-pre-post-draw-viewport
OpenXR: Allow GDExtensions to implement `_on_pre_draw_viewport()` and `_on_post_draw_viewport()`
2 parents 0976c6a + c72eb04 commit 1559645

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

modules/openxr/doc_classes/OpenXRExtensionWrapperExtension.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,21 @@
9090
Called right after the main swapchains are (re)created.
9191
</description>
9292
</method>
93+
<method name="_on_post_draw_viewport" qualifiers="virtual">
94+
<return type="void" />
95+
<param index="0" name="viewport" type="RID" />
96+
<description>
97+
Called right after the given viewport is rendered.
98+
[b]Note:[/b] The draw commands might only be queued at this point, not executed.
99+
</description>
100+
</method>
101+
<method name="_on_pre_draw_viewport" qualifiers="virtual">
102+
<return type="void" />
103+
<param index="0" name="viewport" type="RID" />
104+
<description>
105+
Called right before the given viewport is rendered.
106+
</description>
107+
</method>
93108
<method name="_on_pre_render" qualifiers="virtual">
94109
<return type="void" />
95110
<description>

modules/openxr/extensions/openxr_extension_wrapper_extension.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ void OpenXRExtensionWrapperExtension::_bind_methods() {
5151
GDVIRTUAL_BIND(_on_process);
5252
GDVIRTUAL_BIND(_on_pre_render);
5353
GDVIRTUAL_BIND(_on_main_swapchains_created);
54+
GDVIRTUAL_BIND(_on_pre_draw_viewport, "viewport");
55+
GDVIRTUAL_BIND(_on_post_draw_viewport, "viewport");
5456
GDVIRTUAL_BIND(_on_session_destroyed);
5557
GDVIRTUAL_BIND(_on_state_idle);
5658
GDVIRTUAL_BIND(_on_state_ready);
@@ -208,6 +210,14 @@ void OpenXRExtensionWrapperExtension::on_session_destroyed() {
208210
GDVIRTUAL_CALL(_on_session_destroyed);
209211
}
210212

213+
void OpenXRExtensionWrapperExtension::on_pre_draw_viewport(RID p_render_target) {
214+
GDVIRTUAL_CALL(_on_pre_draw_viewport, p_render_target);
215+
}
216+
217+
void OpenXRExtensionWrapperExtension::on_post_draw_viewport(RID p_render_target) {
218+
GDVIRTUAL_CALL(_on_post_draw_viewport, p_render_target);
219+
}
220+
211221
void OpenXRExtensionWrapperExtension::on_state_idle() {
212222
GDVIRTUAL_CALL(_on_state_idle);
213223
}

modules/openxr/extensions/openxr_extension_wrapper_extension.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ class OpenXRExtensionWrapperExtension : public Object, public OpenXRExtensionWra
8888
virtual void on_pre_render() override;
8989
virtual void on_main_swapchains_created() override;
9090
virtual void on_session_destroyed() override;
91+
virtual void on_pre_draw_viewport(RID p_render_target) override;
92+
virtual void on_post_draw_viewport(RID p_render_target) override;
9193

9294
GDVIRTUAL0(_on_register_metadata);
9395
GDVIRTUAL0(_on_before_instance_created);
@@ -98,6 +100,8 @@ class OpenXRExtensionWrapperExtension : public Object, public OpenXRExtensionWra
98100
GDVIRTUAL0(_on_pre_render);
99101
GDVIRTUAL0(_on_main_swapchains_created);
100102
GDVIRTUAL0(_on_session_destroyed);
103+
GDVIRTUAL1(_on_pre_draw_viewport, RID);
104+
GDVIRTUAL1(_on_post_draw_viewport, RID);
101105

102106
virtual void on_state_idle() override;
103107
virtual void on_state_ready() override;

0 commit comments

Comments
 (0)