Skip to content
This repository was archived by the owner on Nov 8, 2019. It is now read-only.

Commit 5c97c6a

Browse files
committed
GVR SDK for Unity v1.170.0
1 parent 396e884 commit 5c97c6a

File tree

58 files changed

+144
-33
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+144
-33
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,8 @@ obj/
1111
*.suo
1212
*.userprefs
1313

14+
# Gradle generated
15+
.gradle
16+
1417
# OS generated
1518
.DS_Store
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-879 Bytes
Binary file not shown.

Assets/GoogleVR/Scripts/Cardboard/GvrReticlePointer.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
/// Draws a circular reticle in front of any object that the user points at.
1919
/// The circle dilates if the object is clickable.
20+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrReticlePointer")]
2021
public class GvrReticlePointer : GvrBasePointer {
2122
/// The constants below are expsed for testing. Minimum inner angle of the reticle (in degrees).
2223
public const float RETICLE_MIN_INNER_ANGLE = 0.0f;
@@ -112,9 +113,9 @@ public void UpdateDiameters() {
112113
float outer_diameter = 2.0f * Mathf.Tan(outer_half_angle_radians);
113114

114115
ReticleInnerDiameter =
115-
Mathf.Lerp(ReticleInnerDiameter, inner_diameter, Time.deltaTime * reticleGrowthSpeed);
116+
Mathf.Lerp(ReticleInnerDiameter, inner_diameter, Time.unscaledDeltaTime * reticleGrowthSpeed);
116117
ReticleOuterDiameter =
117-
Mathf.Lerp(ReticleOuterDiameter, outer_diameter, Time.deltaTime * reticleGrowthSpeed);
118+
Mathf.Lerp(ReticleOuterDiameter, outer_diameter, Time.unscaledDeltaTime * reticleGrowthSpeed);
118119

119120
MaterialComp.SetFloat("_InnerDiameter", ReticleInnerDiameter * ReticleDistanceInMeters);
120121
MaterialComp.SetFloat("_OuterDiameter", ReticleOuterDiameter * ReticleDistanceInMeters);

Assets/GoogleVR/Scripts/Controller/ArmModel/GvrArmModel.cs

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
/// Standard implementation for a mathematical model to make the virtual controller approximate the
1919
/// physical location of the Daydream controller.
20+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrArmModel")]
2021
public class GvrArmModel : GvrBaseArmModel, IGvrControllerInputDeviceReceiver {
2122
/// Position of the elbow joint relative to the head before the arm model is applied.
2223
public Vector3 elbowRestPosition = DEFAULT_ELBOW_REST_POSITION;

Assets/GoogleVR/Scripts/Controller/ArmModel/GvrBaseArmModel.cs

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
/// Interface for a mathematical model that uses the orientation and location
2020
/// of the physical controller, and predicts the location of the controller and pointer
2121
/// to determine where to place the controller model within the scene.
22+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrBaseArmModel")]
2223
public abstract class GvrBaseArmModel : MonoBehaviour {
2324
/// Vector to represent the controller's location relative to
2425
/// the user's head position.

Assets/GoogleVR/Scripts/Controller/GvrControllerInput.cs

+1
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ public enum GvrControllerHand {
134134
/// To access a controller's state, get a device from `GvrControllerInput.GetDevice` then
135135
/// query it for state. For example, to the dominant controller's current orientation, use
136136
/// `GvrControllerInput.GetDevice(GvrControllerHand.Dominant).Orientation`.
137+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrControllerInput")]
137138
public class GvrControllerInput : MonoBehaviour {
138139
private static GvrControllerInputDevice[] instances = new GvrControllerInputDevice[0];
139140
private static IControllerProvider controllerProvider;

Assets/GoogleVR/Scripts/Controller/GvrControllerReticleVisual.cs

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
/// on distance from the camera.
2222
[RequireComponent(typeof(MeshRenderer))]
2323
[RequireComponent(typeof(MeshFilter))]
24+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrControllerReticleVisual")]
2425
public class GvrControllerReticleVisual : MonoBehaviour {
2526
[Serializable]
2627
public struct FaceCameraData {

Assets/GoogleVR/Scripts/Controller/GvrControllerVisual.cs

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
/// Provides visual feedback for the daydream controller.
2222
[RequireComponent(typeof(Renderer))]
23+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrControllerVisual")]
2324
public class GvrControllerVisual : MonoBehaviour, IGvrArmModelReceiver, IGvrControllerInputDeviceReceiver {
2425
[System.Serializable]
2526
public struct ControllerDisplayState {

Assets/GoogleVR/Scripts/Controller/GvrLaserPointer.cs

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
/// The laser visual is important to help users locate their cursor
2424
/// when its not directly in their field of view.
2525
[RequireComponent(typeof(GvrLaserVisual))]
26+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrLaserPointer")]
2627
public class GvrLaserPointer : GvrBasePointer {
2728
[Tooltip("Distance from the pointer that raycast hits will be detected.")]
2829
public float maxPointerDistance = 20.0f;

Assets/GoogleVR/Scripts/Controller/GvrLaserVisual.cs

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
/// Provides functions for settings the end point of the laser,
2121
/// and clamps the laser and reticle based on max distances.
2222
[RequireComponent(typeof(LineRenderer))]
23+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrLaserVisual")]
2324
public class GvrLaserVisual : MonoBehaviour, IGvrArmModelReceiver {
2425
/// Used to position the reticle at the current position.
2526
[Tooltip("Used to position the reticle at the current position.")]

Assets/GoogleVR/Scripts/Controller/GvrRecenterOnlyController.cs

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
/// orientation change caused by the recenter event.
2828
///
2929
/// Usage: Place on the parent of the camera that should have it's orientation corrected.
30+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrRecenterOnlyController")]
3031
public class GvrRecenterOnlyController : MonoBehaviour {
3132
private Quaternion lastAppliedYawCorrection = Quaternion.identity;
3233
private Quaternion yawCorrection = Quaternion.identity;

Assets/GoogleVR/Scripts/Controller/GvrTrackedController.cs

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
/// tracked, position of the object is updated to approximate arm mechanics by using a
2424
/// `GvrBaseArmModel`. `GvrBaseArmModel`s are also propagated to all `IGvrArmModelReceiver`s
2525
/// underneath this object.
26+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrTrackedController")]
2627
public class GvrTrackedController : MonoBehaviour {
2728
[SerializeField]
2829
[Tooltip("Arm model used to control the pose (position and rotation) of the object, " +

Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/AndroidNativeControllerProvider.cs

+21-20
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,24 @@ class AndroidNativeControllerProvider : IControllerProvider {
6363
private const int GVR_CONTROLLER_API_CLIENT_OBSOLETE = 5;
6464
private const int GVR_CONTROLLER_API_MALFUNCTION = 6;
6565

66+
// The serialization of button-state used to determine which buttons are being pressed.
67+
private readonly GvrControllerButton[] GVR_UNITY_BUTTONS = new GvrControllerButton[] {
68+
GvrControllerButton.App,
69+
GvrControllerButton.System,
70+
GvrControllerButton.TouchPadButton,
71+
GvrControllerButton.Reserved0,
72+
GvrControllerButton.Reserved1,
73+
GvrControllerButton.Reserved2
74+
};
75+
private readonly int[] GVR_BUTTONS = new int[] {
76+
GVR_CONTROLLER_BUTTON_APP,
77+
GVR_CONTROLLER_BUTTON_HOME,
78+
GVR_CONTROLLER_BUTTON_CLICK,
79+
GVR_CONTROLLER_BUTTON_RESERVED0,
80+
GVR_CONTROLLER_BUTTON_RESERVED1,
81+
GVR_CONTROLLER_BUTTON_RESERVED2
82+
};
83+
6684
[StructLayout(LayoutKind.Sequential)]
6785
private struct gvr_quat {
6886
internal float x;
@@ -336,27 +354,10 @@ public void ReadState(ControllerState outState, int controller_id) {
336354
gvr_vec2 touchPos = gvr_controller_state_get_touch_pos(statePtr);
337355
outState.touchPos = new Vector2(touchPos.x, touchPos.y);
338356

339-
int[] gvr_buttons = new int[] {
340-
GVR_CONTROLLER_BUTTON_APP,
341-
GVR_CONTROLLER_BUTTON_HOME,
342-
GVR_CONTROLLER_BUTTON_CLICK,
343-
GVR_CONTROLLER_BUTTON_RESERVED0,
344-
GVR_CONTROLLER_BUTTON_RESERVED1,
345-
GVR_CONTROLLER_BUTTON_RESERVED2
346-
};
347-
GvrControllerButton[] gvrUnityButtons = new GvrControllerButton[] {
348-
GvrControllerButton.App,
349-
GvrControllerButton.System,
350-
GvrControllerButton.TouchPadButton,
351-
GvrControllerButton.Reserved0,
352-
GvrControllerButton.Reserved1,
353-
GvrControllerButton.Reserved2
354-
};
355-
356357
outState.buttonsState = 0;
357-
for (int i=0; i<gvr_buttons.Length; i++) {
358-
if (0 != gvr_controller_state_get_button_state(statePtr, gvr_buttons[i])) {
359-
outState.buttonsState |= gvrUnityButtons[i];
358+
for (int i=0; i<GVR_BUTTONS.Length; i++) {
359+
if (0 != gvr_controller_state_get_button_state(statePtr, GVR_BUTTONS[i])) {
360+
outState.buttonsState |= GVR_UNITY_BUTTONS[i];
360361
}
361362
}
362363
if (0 != gvr_controller_state_is_touching(statePtr)) {

Assets/GoogleVR/Scripts/Controller/Tooltips/GvrControllerTooltipsSimple.cs

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
/// A lightweight tooltip designed to minimize draw calls.
2222
[ExecuteInEditMode]
23+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrControllerTooltipsSimple")]
2324
public class GvrControllerTooltipsSimple : MonoBehaviour, IGvrArmModelReceiver {
2425

2526
private MeshRenderer tooltipRenderer;

Assets/GoogleVR/Scripts/Controller/Tooltips/GvrTooltip.cs

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
[RequireComponent(typeof(CanvasGroup))]
2626
[RequireComponent(typeof(RectTransform))]
2727
[ExecuteInEditMode]
28+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrTooltip")]
2829
public class GvrTooltip : MonoBehaviour, IGvrArmModelReceiver {
2930
/// Rotation for a tooltip when it is displayed on the right side of the controller visual.
3031
protected static readonly Quaternion RIGHT_SIDE_ROTATION = Quaternion.Euler(0.0f, 0.0f, 0.0f);

Assets/GoogleVR/Scripts/EventSystem/GvrPointerGraphicRaycaster.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
/// View GvrBasePointerRaycaster.cs and GvrPointerInputModule.cs for more details.
2525
[AddComponentMenu("GoogleVR/GvrPointerGraphicRaycaster")]
2626
[RequireComponent(typeof(Canvas))]
27+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrPointerGraphicRaycaster")]
2728
public class GvrPointerGraphicRaycaster : GvrBasePointerRaycaster {
2829
public enum BlockingObjects {
2930
None = 0,
@@ -135,13 +136,13 @@ protected override bool PerformRaycast(GvrBasePointer.PointerRay pointerRay, flo
135136
float rayDot = Vector3.Dot(transForward, pointerRay.ray.direction);
136137
resultDistance = transDot / rayDot;
137138
Vector3 hitPosition = pointerRay.ray.origin + (pointerRay.ray.direction * resultDistance);
138-
resultDistance = resultDistance + pointerRay.distanceFromStart;
139139

140140
// Check to see if the go is behind the camera.
141141
if (resultDistance < 0 || resultDistance >= hitDistance || resultDistance > pointerRay.distance) {
142142
continue;
143143
}
144144

145+
resultDistance = resultDistance + pointerRay.distanceFromStart;
145146
Transform pointerTransform =
146147
GvrPointerInputModule.Pointer.PointerTransform;
147148
float delta = (hitPosition - pointerTransform.position).magnitude;

Assets/GoogleVR/Scripts/EventSystem/GvrPointerPhysicsRaycaster.cs

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
///
2424
/// View GvrBasePointerRaycaster.cs and GvrPointerInputModule.cs for more details.
2525
[AddComponentMenu("GoogleVR/GvrPointerPhysicsRaycaster")]
26+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrPointerPhysicsRaycaster")]
2627
public class GvrPointerPhysicsRaycaster : GvrBasePointerRaycaster {
2728
/// Used to sort the raycast hits by distance.
2829
private class HitComparer: IComparer<RaycastHit> {

Assets/GoogleVR/Scripts/EventSystem/GvrScrollSettings.cs

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
/// Used to override the global scroll settings in _GvrPointerScrollInput_
1919
/// for the GameObject that this script is attached to.
20+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrScrollSettings")]
2021
public class GvrScrollSettings : MonoBehaviour, IGvrScrollSettings {
2122
/// Override the Inertia property in _GvrPointerScrollInput_ for this object.
2223
///
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// Copyright 2018 Google Inc. All rights reserved.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
using UnityEngine;
16+
using System.Collections;
17+
18+
#if UNITY_2017_2_OR_NEWER
19+
using UnityEngine.XR;
20+
#else
21+
using XRDevice = UnityEngine.VR.VRDevice;
22+
using XRSettings = UnityEngine.VR.VRSettings;
23+
#endif // UNITY_2017_2_OR_NEWER
24+
25+
// Handler for subscribing XR Unity actions to GVR Actions.
26+
public class GvrXREventsSubscriber : MonoBehaviour {
27+
private static GvrXREventsSubscriber instance;
28+
private string _loadedDeviceName;
29+
public static string loadedDeviceName {
30+
get {
31+
return GetInstance()._loadedDeviceName;
32+
}
33+
set {
34+
GetInstance()._loadedDeviceName = value;
35+
}
36+
}
37+
38+
private static void OnDeviceLoadAction(string newLoadedDeviceName) {
39+
loadedDeviceName = newLoadedDeviceName;
40+
}
41+
42+
void Awake() {
43+
instance = this;
44+
_loadedDeviceName = XRSettings.loadedDeviceName;
45+
#if UNITY_2018_3_OR_NEWER
46+
XRDevice.deviceLoaded += OnDeviceLoadAction;
47+
#endif // UNITY_2018_3_OR_NEWER
48+
}
49+
50+
private static GvrXREventsSubscriber GetInstance() {
51+
if (instance == null) {
52+
GameObject gvrXREventsSubscriber = new GameObject("GvrXREventsSubscriber");
53+
gvrXREventsSubscriber.AddComponent<GvrXREventsSubscriber>();
54+
}
55+
return instance;
56+
}
57+
}

Assets/GoogleVR/Scripts/EventSystem/GvrXREventsSubscriber.cs.meta

+11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrAllEventsTrigger.cs

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
/// Exposes events from _GvrEventExecutor_ that are fired by _GvrPointerInputModule_ to the editor.
2222
/// Makes it possible to handle EventSystem events globally.
23+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrAllEventsTrigger")]
2324
public class GvrAllEventsTrigger : MonoBehaviour {
2425

2526
[Serializable]

Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModule.cs

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
/// - Set the parent of GvrReticlePointer to the main camera.
4848
///
4949
[AddComponentMenu("GoogleVR/GvrPointerInputModule")]
50+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrPointerInputModule")]
5051
public class GvrPointerInputModule : BaseInputModule, IGvrInputModuleController {
5152
/// Determines whether Pointer input is active in VR Mode only (`true`), or all of the
5253
/// time (`false`). Set to false if you plan to use direct screen taps or other

Assets/GoogleVR/Scripts/GvrEditorEmulator.cs

+17-5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
using Gvr.Internal;
2020

2121
/// Provides mouse-controlled head tracking emulation in the Unity editor.
22+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrEditorEmulator")]
2223
public class GvrEditorEmulator : MonoBehaviour {
2324
// GvrEditorEmulator should only be compiled in the Editor.
2425
//
@@ -30,7 +31,17 @@ public class GvrEditorEmulator : MonoBehaviour {
3031
// queries the camera pose during Update or LateUpdate after GvrEditorEmulator has been
3132
// updated will get the wrong value applied by GvrEditorEmulator intsead.
3233
#if UNITY_EDITOR
33-
public static GvrEditorEmulator Instance { get; private set; }
34+
private static GvrEditorEmulator instance;
35+
private static bool instance_searched_for = false;
36+
public static GvrEditorEmulator Instance {
37+
get {
38+
if (instance == null && !instance_searched_for) {
39+
instance = FindObjectOfType<GvrEditorEmulator>();
40+
instance_searched_for = true;
41+
}
42+
return instance;
43+
}
44+
}
3445
// Allocate an initial capacity; this will be resized if needed.
3546
private static Camera[] AllCameras = new Camera[32];
3647
private const string AXIS_MOUSE_X = "Mouse X";
@@ -89,13 +100,14 @@ public void UpdateEditorEmulation() {
89100
}
90101

91102
void Awake() {
92-
if (Instance != null) {
93-
Debug.LogError("More than one GvrEditorEmulator instance was found in your scene. "
94-
+ "Ensure that there is only one GvrEditorEmulator.");
103+
if (Instance == null) {
104+
instance = this;
105+
} else if (Instance != this) {
106+
Debug.LogError("More than one active GvrEditorEmulator instance was found in your scene. "
107+
+ "Ensure that there is only one active GvrEditorEmulator.");
95108
this.enabled = false;
96109
return;
97110
}
98-
Instance = this;
99111
}
100112

101113
void Update() {

Assets/GoogleVR/Scripts/GvrSettings.cs

+7-3
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,14 @@ public static IntPtr GetValidGvrNativePtrOrLogError() {
169169
Debug.LogError("VR is disabled");
170170
return IntPtr.Zero;
171171
}
172-
if (XRSettings.loadedDeviceName != VR_SDK_DAYDREAM
173-
&& XRSettings.loadedDeviceName != VR_SDK_CARDBOARD) {
172+
#if UNITY_2018_3_OR_NEWER
173+
string loadedDeviceName = GvrXREventsSubscriber.loadedDeviceName;
174+
#else // !UNITY_2018_3_OR_NEWER; this leaks 30 bytes of memory per update.
175+
string loadedDeviceName = XRSettings.loadedDeviceName;
176+
#endif // UNITY_2018_3_OR_NEWER
177+
if (loadedDeviceName != VR_SDK_DAYDREAM && loadedDeviceName != VR_SDK_CARDBOARD) {
174178
Debug.LogErrorFormat("Loaded VR SDK '{0}' must be '{1}' or '{2}'",
175-
XRSettings.loadedDeviceName, VR_SDK_DAYDREAM, VR_SDK_CARDBOARD);
179+
loadedDeviceName, VR_SDK_DAYDREAM, VR_SDK_CARDBOARD);
176180
return IntPtr.Zero;
177181
}
178182
IntPtr gvrContextPtr = XRDevice.GetNativePtr();

Assets/GoogleVR/Scripts/GvrUnitySdkVersion.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
/// Provides and logs versioning information for the GVR SDK for Unity.
1919
/// </summary>
2020
public class GvrUnitySdkVersion {
21-
public const string GVR_SDK_VERSION = "1.150.0";
21+
public const string GVR_SDK_VERSION = "1.170.0";
2222

2323
// Google VR SDK supports Unity 5.6 or newer.
2424
#if !UNITY_5_6_OR_NEWER

Assets/GoogleVR/Scripts/Headset/GvrHeadset.cs

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
/// such prefab in a scene.
2626
///
2727
/// This is a singleton object.
28+
[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrHeadset")]
2829
public class GvrHeadset : MonoBehaviour {
2930
private static GvrHeadset instance;
3031

Binary file not shown.

Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.cs

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
using System.Threading;
2222

2323
namespace Gvr.Internal {
24+
[HelpURL("https://developers.google.com/vr/unity/reference/class/InstantPreview")]
2425
public class InstantPreview : MonoBehaviour {
2526
private const string NoDevicesFoundAdbResult = "error: no devices/emulators found";
2627

Assets/GoogleVR/Scripts/InstantPreview/InstantPreviewHelper.cs

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
using UnityEngine;
2222

2323
[ExecuteInEditMode]
24+
[HelpURL("https://developers.google.com/vr/unity/reference/class/InstantPreviewHelper")]
2425
public class InstantPreviewHelper : MonoBehaviour {
2526
public static string AdbPath;
2627

0 commit comments

Comments
 (0)