@@ -21,6 +21,8 @@ public partial class MainScene : Node
2121
2222 private bool _sendPackets = true ;
2323
24+ public Transform3D OriginOffset { get ; private set ; }
25+
2426 public override void _Ready ( )
2527 {
2628 base . _Ready ( ) ;
@@ -39,14 +41,24 @@ public override void _Ready()
3941 var xrInterface = XRServer . FindInterface ( "OpenXR" ) ;
4042 if ( xrInterface != null && xrInterface . IsInitialized ( ) ) enableXr = true ;
4143
42- foreach ( var item in argsLower )
44+ var os = OS . GetName ( ) ;
45+ var device = OS . GetModelName ( ) . ToLower ( ) ;
46+ if ( os == "Android" )
4347 {
44- if ( item == "--use-openvr" ) enableOpenVr = true ;
45- else if ( item == "--use-debug" ) enableDebug = true ;
46- else if ( item == "--use-openxr-overlay" ) enableXrOverlay = true ;
47- else if ( item == "--test-routines" ) enableTestRoutines = true ;
48+ enableXr = true ;
49+ if ( device . Contains ( "pico" ) ) enableXrOverlay = true ; //only monado and pico support overlays
4850 }
49-
51+ else
52+ {
53+ foreach ( var item in argsLower )
54+ {
55+ if ( item == "--use-openvr" ) enableOpenVr = true ;
56+ else if ( item == "--use-debug" ) enableDebug = true ;
57+ else if ( item == "--use-openxr-overlay" ) enableXrOverlay = true ;
58+ else if ( item == "--test-routines" ) enableTestRoutines = true ;
59+ }
60+ }
61+
5062 if ( ! enableOpenVr && ! enableXr && ! enableDebug ) throw new Exception ( "Invalid configuration, no backend provided" ) ;
5163 if ( enableOpenVr && ( enableXr || enableXrOverlay ) ) throw new Exception ( "Invalid configuration, OpenXR cannot be enabled at the same time as OpenVR" ) ;
5264 if ( enableXrOverlay && ! enableXr ) throw new Exception ( "Invalid configuration, OpenXR must be enabled to use OpenXR Overlay" ) ;
@@ -70,10 +82,8 @@ public override void _Ready()
7082 //test.SendPacket(new RunFixedLenghtRoutinePacket("debug"));
7183 test . SendPacket ( new RunVariableLenghtRoutinePacket ( "convergencetutorial" , TimeSpan . FromSeconds ( 5 ) ) ) ;
7284 await Task . Delay ( 5000 ) ;
73- test . SendPacket ( new RunFixedLenghtRoutinePacket ( "startsound" ) ) ;
7485 test . SendPacket ( new RunVariableLenghtRoutinePacket ( "convergence" , TimeSpan . FromSeconds ( 20 ) ) ) ;
7586 await Task . Delay ( 20000 ) ;
76- test . SendPacket ( new RunFixedLenghtRoutinePacket ( "endsound" ) ) ;
7787 } ) ;
7888 }
7989 else
@@ -107,6 +117,17 @@ public override void _Ready()
107117 Backend . Initialize ( ) ;
108118
109119 StartRoutine < TextRoutine > ( RoutineHelpers . LabelRoutineArgs ( Tr ( ConnectingString ) , true , Transform3D . Identity . TranslatedLocal ( Vector3 . Forward ) ) ) ;
120+
121+ Task . Run ( async ( ) =>
122+ {
123+ await Task . Delay ( 50 ) ;
124+ var headTransform = Backend . HeadTransform ( ) ;
125+ var position = headTransform . Origin with { Y = 0 } ;
126+ var projected = ( ( headTransform . Basis . GetRotationQuaternion ( ) * Vector3 . Forward ) with { Y = 0 } ) . Normalized ( ) ;
127+ var newQuaternion = new Quaternion ( Vector3 . Forward , projected ) ;
128+
129+ OriginOffset = new Transform3D ( new Basis ( newQuaternion ) , position ) ;
130+ } ) ;
110131 }
111132 private static readonly StringName ConnectingString = "Connecting" ;
112133 public void SendPacket < T > ( T packet ) where T : IPacket
@@ -168,12 +189,15 @@ public void StartRoutine(string name, float time = 0)
168189 case "trainer" :
169190 StartRoutine < GraphRoutine > ( ) ;
170191 break ;
192+ /*
171193 case "startsound":
172194 PlaySound(StartSound);
173195 break;
174196 case "endsound":
175197 PlaySound(EndSound);
176198 break;
199+ */
200+ //blame red
177201 case "close" :
178202 GetTree ( ) . Quit ( ) ;
179203 break ;
@@ -187,7 +211,8 @@ void StartTextTimerRoutine(string text) =>
187211 StartRoutine < TextTimerRoutine > ( RoutineHelpers . LabelTimerRoutineArgs ( text ,
188212 time , true , Transform3D . Identity . TranslatedLocal ( Vector3 . Forward ) ) ) ;
189213 }
190-
214+ public void PlayStartSound ( ) => PlaySound ( StartSound ) ;
215+ public void PlayEndSound ( ) => PlaySound ( EndSound ) ;
191216 private void PlaySound ( AudioStream stream )
192217 {
193218 _audioPlayer . Stop ( ) ;
@@ -210,7 +235,7 @@ public override void _Process(double delta)
210235 CurrentRoutine . Initialize ( Backend , args ) ;
211236
212237 var elem = Backend . CreateElementWithObject ( ResourceLoader . Load < PackedScene > ( "res://Scenes/Routines/FloorIndicator.tscn" ) . Instantiate < PanelContainer > ( ) ) ;
213- elem . ElementTransform = new Transform3D ( new Basis ( new Quaternion ( Vector3 . Forward , Vector3 . Down ) ) , Vector3 . Up * 0.001f ) ;
238+ elem . ElementTransform = OriginOffset * new Transform3D ( new Basis ( new Quaternion ( Vector3 . Forward , Vector3 . Down ) ) , Vector3 . Up * 0.001f ) ;
214239 elem . ElementWidth = 1.5f ;
215240 }
216241}
0 commit comments