summaryrefslogtreecommitdiffstats
path: root/modules/openxr/scene/openxr_composition_layer.h
diff options
context:
space:
mode:
Diffstat (limited to 'modules/openxr/scene/openxr_composition_layer.h')
-rw-r--r--modules/openxr/scene/openxr_composition_layer.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/modules/openxr/scene/openxr_composition_layer.h b/modules/openxr/scene/openxr_composition_layer.h
index 55cae27d23..26b40236d2 100644
--- a/modules/openxr/scene/openxr_composition_layer.h
+++ b/modules/openxr/scene/openxr_composition_layer.h
@@ -35,6 +35,7 @@
#include "scene/3d/node_3d.h"
+class JavaObject;
class MeshInstance3D;
class Mesh;
class OpenXRAPI;
@@ -45,7 +46,12 @@ class SubViewport;
class OpenXRCompositionLayer : public Node3D {
GDCLASS(OpenXRCompositionLayer, Node3D);
+ XrCompositionLayerBaseHeader *composition_layer_base_header = nullptr;
+ OpenXRViewportCompositionLayerProvider *openxr_layer_provider = nullptr;
+
SubViewport *layer_viewport = nullptr;
+ bool use_android_surface = false;
+ Size2i android_surface_size = Size2i(1024, 1024);
bool enable_hole_punch = false;
MeshInstance3D *fallback = nullptr;
bool should_update_fallback_mesh = false;
@@ -58,10 +64,12 @@ class OpenXRCompositionLayer : public Node3D {
void _reset_fallback_material();
void _remove_fallback_node();
+ void _setup_composition_layer_provider();
+ void _clear_composition_layer_provider();
+
protected:
OpenXRAPI *openxr_api = nullptr;
OpenXRCompositionLayerExtension *composition_layer_extension = nullptr;
- OpenXRViewportCompositionLayerProvider *openxr_layer_provider = nullptr;
static void _bind_methods();
@@ -69,6 +77,7 @@ protected:
void _get_property_list(List<PropertyInfo> *p_property_list) const;
bool _get(const StringName &p_property, Variant &r_value) const;
bool _set(const StringName &p_property, const Variant &p_value);
+ void _validate_property(PropertyInfo &p_property) const;
virtual void _on_openxr_session_begun();
virtual void _on_openxr_session_stopping();
@@ -82,10 +91,18 @@ protected:
static Vector<OpenXRCompositionLayer *> composition_layer_nodes;
bool is_viewport_in_use(SubViewport *p_viewport);
+ OpenXRCompositionLayer(XrCompositionLayerBaseHeader *p_composition_layer);
+
public:
void set_layer_viewport(SubViewport *p_viewport);
SubViewport *get_layer_viewport() const;
+ void set_use_android_surface(bool p_use_android_surface);
+ bool get_use_android_surface() const;
+
+ void set_android_surface_size(Size2i p_size);
+ Size2i get_android_surface_size() const;
+
void set_enable_hole_punch(bool p_enable);
bool get_enable_hole_punch() const;
@@ -95,13 +112,13 @@ public:
void set_alpha_blend(bool p_alpha_blend);
bool get_alpha_blend() const;
+ Ref<JavaObject> get_android_surface();
bool is_natively_supported() const;
virtual PackedStringArray get_configuration_warnings() const override;
virtual Vector2 intersects_ray(const Vector3 &p_origin, const Vector3 &p_direction) const;
- OpenXRCompositionLayer();
~OpenXRCompositionLayer();
};