mirror of
https://github.com/godotengine/godot.git
synced 2024-12-15 10:12:40 +08:00
Merge pull request #48283 from BastiaanOlij/xr_viewport
Move XR flag from subviewport into viewport
This commit is contained in:
commit
f3c1190dc9
@ -34,9 +34,6 @@
|
||||
<member name="size_2d_override_stretch" type="bool" setter="set_size_2d_override_stretch" getter="is_size_2d_override_stretch_enabled" default="false">
|
||||
If [code]true[/code], the 2D size override affects stretch as well.
|
||||
</member>
|
||||
<member name="xr" type="bool" setter="set_use_xr" getter="is_using_xr" default="false">
|
||||
If [code]true[/code], the sub-viewport will be used in AR/VR process.
|
||||
</member>
|
||||
</members>
|
||||
<constants>
|
||||
<constant name="CLEAR_MODE_ALWAYS" value="0" enum="ClearMode">
|
||||
|
@ -269,6 +269,9 @@
|
||||
</member>
|
||||
<member name="use_occlusion_culling" type="bool" setter="set_use_occlusion_culling" getter="is_using_occlusion_culling" default="false">
|
||||
</member>
|
||||
<member name="use_xr" type="bool" setter="set_use_xr" getter="is_using_xr" default="false">
|
||||
If [code]true[/code], the viewport will use the primary XR interface to render XR output. When applicable this can result in a stereoscopic image and the resulting render being output to a headset.
|
||||
</member>
|
||||
<member name="world_2d" type="World2D" setter="set_world_2d" getter="get_world_2d">
|
||||
The custom [World2D] which can be used as 2D environment source.
|
||||
</member>
|
||||
|
@ -1412,6 +1412,16 @@ void Viewport::_update_canvas_items(Node *p_node) {
|
||||
}
|
||||
}
|
||||
|
||||
void Viewport::set_use_xr(bool p_use_xr) {
|
||||
use_xr = p_use_xr;
|
||||
|
||||
RS::get_singleton()->viewport_set_use_xr(viewport, use_xr);
|
||||
}
|
||||
|
||||
bool Viewport::is_using_xr() {
|
||||
return use_xr;
|
||||
}
|
||||
|
||||
Ref<ViewportTexture> Viewport::get_texture() const {
|
||||
return default_texture;
|
||||
}
|
||||
@ -3498,6 +3508,9 @@ void Viewport::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_render_info", "info"), &Viewport::get_render_info);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_use_xr", "use"), &Viewport::set_use_xr);
|
||||
ClassDB::bind_method(D_METHOD("is_using_xr"), &Viewport::is_using_xr);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_texture"), &Viewport::get_texture);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_physics_object_picking", "enable"), &Viewport::set_physics_object_picking);
|
||||
@ -3578,6 +3591,7 @@ void Viewport::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("_process_picking"), &Viewport::_process_picking);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_xr"), "set_use_xr", "is_using_xr");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "own_world_3d"), "set_use_own_world_3d", "is_using_own_world_3d");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world_3d", PROPERTY_HINT_RESOURCE_TYPE, "World3D"), "set_world_3d", "get_world_3d");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world_2d", PROPERTY_HINT_RESOURCE_TYPE, "World2D", 0), "set_world_2d", "get_world_2d");
|
||||
@ -3746,16 +3760,6 @@ Viewport::~Viewport() {
|
||||
|
||||
/////////////////////////////////
|
||||
|
||||
void SubViewport::set_use_xr(bool p_use_xr) {
|
||||
xr = p_use_xr;
|
||||
|
||||
RS::get_singleton()->viewport_set_use_xr(get_viewport_rid(), xr);
|
||||
}
|
||||
|
||||
bool SubViewport::is_using_xr() {
|
||||
return xr;
|
||||
}
|
||||
|
||||
void SubViewport::set_size(const Size2i &p_size) {
|
||||
_set_size(p_size, _get_size_2d_override(), Rect2i(), _stretch_transform(), true);
|
||||
}
|
||||
@ -3828,9 +3832,6 @@ void SubViewport::_notification(int p_what) {
|
||||
}
|
||||
|
||||
void SubViewport::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_use_xr", "use"), &SubViewport::set_use_xr);
|
||||
ClassDB::bind_method(D_METHOD("is_using_xr"), &SubViewport::is_using_xr);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_size", "size"), &SubViewport::set_size);
|
||||
ClassDB::bind_method(D_METHOD("get_size"), &SubViewport::get_size);
|
||||
|
||||
@ -3846,7 +3847,6 @@ void SubViewport::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_clear_mode", "mode"), &SubViewport::set_clear_mode);
|
||||
ClassDB::bind_method(D_METHOD("get_clear_mode"), &SubViewport::get_clear_mode);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "xr"), "set_use_xr", "is_using_xr");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size"), "set_size", "get_size");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size_2d_override"), "set_size_2d_override", "get_size_2d_override");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "size_2d_override_stretch"), "set_size_2d_override_stretch", "is_size_2d_override_stretch_enabled");
|
||||
|
@ -234,6 +234,7 @@ private:
|
||||
Size2i size;
|
||||
Size2i size_2d_override;
|
||||
bool size_allocated = false;
|
||||
bool use_xr = false;
|
||||
|
||||
RID contact_2d_debug;
|
||||
RID contact_3d_debug_multimesh;
|
||||
@ -534,6 +535,9 @@ public:
|
||||
void set_transparent_background(bool p_enable);
|
||||
bool has_transparent_background() const;
|
||||
|
||||
void set_use_xr(bool p_use_xr);
|
||||
bool is_using_xr();
|
||||
|
||||
Ref<ViewportTexture> get_texture() const;
|
||||
|
||||
void set_shadow_atlas_size(int p_size);
|
||||
@ -656,7 +660,6 @@ public:
|
||||
private:
|
||||
UpdateMode update_mode = UPDATE_WHEN_VISIBLE;
|
||||
ClearMode clear_mode = CLEAR_MODE_ALWAYS;
|
||||
bool xr = false;
|
||||
bool size_2d_override_stretch = false;
|
||||
|
||||
protected:
|
||||
@ -672,9 +675,6 @@ public:
|
||||
void set_size_2d_override(const Size2i &p_size);
|
||||
Size2i get_size_2d_override() const;
|
||||
|
||||
void set_use_xr(bool p_use_xr);
|
||||
bool is_using_xr();
|
||||
|
||||
void set_size_2d_override_stretch(bool p_enable);
|
||||
bool is_size_2d_override_stretch_enabled() const;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user