Skip to content

Commit 184232f

Browse files
committed
Changed the way views data is sent from JS to C#
1 parent a4f5cdb commit 184232f

File tree

3 files changed

+10
-41
lines changed

3 files changed

+10
-41
lines changed

Packages/webxr/Runtime/Plugins/WebGL/webxr.jslib

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ mergeInto(LibraryManager.library, {
55
console.log(Module.WebXR.Settings);
66
},
77

8-
InitXRSharedArray: function(byteOffset, length) {
9-
Module.XRSharedArrayOffset = byteOffset;
10-
Module.XRSharedArrayLength= length;
11-
Module.XRSharedArray = new Float32Array(buffer, byteOffset, length);
8+
InitXRSharedArray: function(byteOffset) {
9+
Module.XRSharedArrayOffset = byteOffset / 4;
1210
Module.WebXR.onUnityLoaded({detail: {state: 'Ready', module: Module}});
1311
},
1412

Packages/webxr/Runtime/Plugins/WebGL/webxr.jspre

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,6 @@ setTimeout(function () {
2525
'use strict';
2626

2727
function XRData() {
28-
this.leftProjectionMatrix = [1, 0, 0, 0,
29-
0, 1, 0, 0,
30-
0, 0, 1, 0,
31-
0, 0, 0, 1];
32-
this.rightProjectionMatrix = [1, 0, 0, 0,
33-
0, 1, 0, 0,
34-
0, 0, 1, 0,
35-
0, 0, 0, 1];
3628
this.leftViewRotation = [0, 0, 0, 1];
3729
this.rightViewRotation = [0, 0, 0, 1];
3830
this.leftViewPosition = [0, 0, 0];
@@ -831,21 +823,25 @@ setTimeout(function () {
831823
var view = pose.views[i];
832824
var transformMatrix = view.transform.matrix;
833825
if (view.eye === "left" || view.eye === "none") {
834-
xrData.leftProjectionMatrix = view.projectionMatrix;
826+
Module.HEAPF32.set(view.projectionMatrix, Module.XRSharedArrayOffset); // leftProjectionMatrix
835827
this.quaternionFromMatrix(0, transformMatrix, xrData.leftViewRotation);
836828
xrData.leftViewRotation[0] = -xrData.leftViewRotation[0];
837829
xrData.leftViewRotation[1] = -xrData.leftViewRotation[1];
838830
xrData.leftViewPosition[0] = transformMatrix[12];
839831
xrData.leftViewPosition[1] = transformMatrix[13];
840832
xrData.leftViewPosition[2] = -transformMatrix[14];
833+
Module.HEAPF32.set(xrData.leftViewRotation, Module.XRSharedArrayOffset + 32); // leftViewRotation
834+
Module.HEAPF32.set(xrData.leftViewPosition, Module.XRSharedArrayOffset + 40); // leftViewPosition
841835
} else if (view.eye === 'right') {
842-
xrData.rightProjectionMatrix = view.projectionMatrix;
836+
Module.HEAPF32.set(view.projectionMatrix, Module.XRSharedArrayOffset + 16); // rightProjectionMatrix
843837
this.quaternionFromMatrix(0, transformMatrix, xrData.rightViewRotation);
844838
xrData.rightViewRotation[0] = -xrData.rightViewRotation[0];
845839
xrData.rightViewRotation[1] = -xrData.rightViewRotation[1];
846840
xrData.rightViewPosition[0] = transformMatrix[12];
847841
xrData.rightViewPosition[1] = transformMatrix[13];
848842
xrData.rightViewPosition[2] = -transformMatrix[14];
843+
Module.HEAPF32.set(xrData.rightViewRotation, Module.XRSharedArrayOffset + 36); // rightViewRotation
844+
Module.HEAPF32.set(xrData.rightViewPosition, Module.XRSharedArrayOffset + 43); // rightViewPosition
849845
}
850846
}
851847

@@ -886,16 +882,6 @@ setTimeout(function () {
886882
this.gameModule.WebXR.OnInputProfiles(JSON.stringify(inputProfiles));
887883
}
888884

889-
// Dispatch event with headset data to be handled in webxr.jslib
890-
this.updateUnityXRData({
891-
leftProjectionMatrix: xrData.leftProjectionMatrix,
892-
rightProjectionMatrix: xrData.rightProjectionMatrix,
893-
leftViewRotation: xrData.leftViewRotation,
894-
rightViewRotation: xrData.rightViewRotation,
895-
leftViewPosition: xrData.leftViewPosition,
896-
rightViewPosition: xrData.rightViewPosition
897-
});
898-
899885
if (!this.didNotifyUnity)
900886
{
901887
var eyeCount = 1;
@@ -943,21 +929,6 @@ setTimeout(function () {
943929
return this.didNotifyUnity;
944930
}
945931

946-
XRManager.prototype.updateUnityXRData = function (data) {
947-
var index = 0;
948-
if (Module.XRSharedArray.byteLength == 0) {
949-
Module.XRSharedArray = new Float32Array(buffer, Module.XRSharedArrayOffset, Module.XRSharedArrayLength);
950-
}
951-
Object.keys(data).forEach(function (key, i) {
952-
var dataLength = data[key].length;
953-
if (dataLength) {
954-
for (var x = 0; x < dataLength; x++) {
955-
Module.XRSharedArray[index++] = data[key][x];
956-
}
957-
}
958-
});
959-
}
960-
961932
function initWebXRManager () {
962933
var xrManager = window.xrManager = new XRManager();
963934
return xrManager;

Packages/webxr/Runtime/XRPlugin/WebXRSubsystem.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,15 +173,15 @@ private void InternalStart()
173173
Native.InitControllersArray(controllersArray);
174174
Native.InitHandsArray(handsArray);
175175
Native.InitViewerHitTestPoseArray(viewerHitTestPoseArray);
176-
Native.InitXRSharedArray(sharedArray, sharedArray.Length);
176+
Native.InitXRSharedArray(sharedArray);
177177
#endif
178178
}
179179

180180
#if UNITY_WEBGL
181181
private static class Native
182182
{
183183
[DllImport("__Internal")]
184-
public static extern void InitXRSharedArray(float[] array, int length);
184+
public static extern void InitXRSharedArray(float[] array);
185185

186186
[DllImport("__Internal")]
187187
public static extern void InitControllersArray(float[] array);

0 commit comments

Comments
 (0)