Skip to content

Commit d0cc0e1

Browse files
committed
WIP: Add openxr overlay support to the demo project
Adds a WorldEnvironment to the Main node instead of relying on default_env.tres. While a main session is not visible, env mode is sky. If a main session is visible, env mode is a custom color with alpha = 0. v2: Use set_transparent_background
1 parent 43183f9 commit d0cc0e1

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

Diff for: demo/Main.gd

+16
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ func _ready():
99
print("Supported refresh rates: " + str($FPSController/Configuration.get_available_refresh_rates()))
1010
print("Supported color spaces: " + str($FPSController/Configuration.get_available_color_spaces()))
1111
print("Current color space: " + str($FPSController/Configuration.get_color_space()))
12+
print("Main session visible: " + str($FPSController/Configuration.get_main_session_visible()))
13+
14+
15+
var main_session_visible = false;
1216

1317
func _process(delta):
1418
# Test for escape to close application, space to reset our reference frame
@@ -33,3 +37,15 @@ func _process(delta):
3337
# this is a little dirty but we're going to just tie the trigger input of our controllers to their haptic output for testing
3438
$FPSController/LeftHandController.rumble = $FPSController/LeftHandController.get_joystick_axis(JOY_VR_ANALOG_TRIGGER)
3539
$FPSController/RightHandController.rumble = $FPSController/RightHandController.get_joystick_axis(JOY_VR_ANALOG_TRIGGER)
40+
41+
var main_session_visible_now = $FPSController/Configuration.get_main_session_visible();
42+
var main_session_visible_changed = main_session_visible != main_session_visible_now
43+
main_session_visible = main_session_visible_now
44+
45+
if (main_session_visible_changed):
46+
var env = $WorldEnvironment.get_environment()
47+
if (main_session_visible):
48+
get_tree().get_root().set_transparent_background(true)
49+
else:
50+
get_tree().get_root().set_transparent_background(false)
51+

Diff for: demo/Main.tscn

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
[gd_scene load_steps=19 format=2]
1+
[gd_scene load_steps=20 format=2]
22

33
[ext_resource path="res://Main.gd" type="Script" id=1]
44
[ext_resource path="res://Ground.tscn" type="PackedScene" id=2]
55
[ext_resource path="res://Table.tscn" type="PackedScene" id=3]
66
[ext_resource path="res://addons/godot-openxr/scenes/first_person_controller_vr.tscn" type="PackedScene" id=4]
77
[ext_resource path="res://addons/godot-openxr/assets/valve_hand_models/textures/vr_glove_color.jpg" type="Texture" id=5]
8+
[ext_resource path="res://default_env.tres" type="Environment" id=6]
89
[ext_resource path="res://addons/godot-openxr/scenes/XRPose.tscn" type="PackedScene" id=7]
910
[ext_resource path="res://addons/godot-xr-tools/objects/Viewport_2D_in_3D.tscn" type="PackedScene" id=8]
1011
[ext_resource path="res://ControllerInfo.tscn" type="PackedScene" id=9]
@@ -157,6 +158,9 @@ viewport_size = Vector2( 600, 400 )
157158
scene = ExtResource( 12 )
158159
collision_layer = 1024
159160

161+
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
162+
environment = ExtResource( 6 )
163+
160164
[editable path="FPSController"]
161165
[editable path="FPSController/LeftHand"]
162166
[editable path="FPSController/LeftHand/HandModel"]

Diff for: demo/project.godot

+4
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ Fire={
4747
3d_physics/layer_3="Objects"
4848
3d_physics/layer_11="UI"
4949

50+
[network]
51+
52+
limits/debugger_stdout/max_chars_per_second=4096
53+
5054
[rendering]
5155

5256
quality/driver/driver_name="GLES2"

0 commit comments

Comments
 (0)