Tanoda
LeapXRServiceProviderEditor.cs
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (C) Ultraleap, Inc. 2011-2020. *
3 * *
4 * Use subject to the terms of the Apache License 2.0 available at *
5 * http://www.apache.org/licenses/LICENSE-2.0, or another agreement *
6 * between Ultraleap and you, your company or other organization. *
7 ******************************************************************************/
8
9 using UnityEditor;
10 using UnityEngine;
11
12namespace Leap.Unity {
13
14 [CustomEditor(typeof(LeapXRServiceProvider))]
16
17 protected override void OnEnable() {
18 base.OnEnable();
19 isVRProvider = true;
20
21 specifyConditionalDrawing(() => { return serializedObject
22 .FindProperty("_temporalWarpingMode")
23 .enumValueIndex == 1; },
24 "_customWarpAdjustment");
25
26 specifyConditionalDrawing(() => { return serializedObject
27 .FindProperty("_deviceOffsetMode")
28 .enumValueIndex == 1; },
29 "_deviceOffsetYAxis",
30 "_deviceOffsetZAxis",
31 "_deviceTiltXAxis");
32
33 specifyConditionalDrawing(() => { return serializedObject
34 .FindProperty("_deviceOffsetMode")
35 .enumValueIndex == 2; },
36 "_deviceOrigin");
37
38 addPropertyToFoldout("_deviceOffsetMode" , "Advanced Options");
39 addPropertyToFoldout("_temporalWarpingMode" , "Advanced Options");
40 addPropertyToFoldout("_customWarpAdjustment", "Advanced Options");
41 addPropertyToFoldout("_deviceOffsetYAxis" , "Advanced Options");
42 addPropertyToFoldout("_deviceOffsetZAxis" , "Advanced Options");
43 addPropertyToFoldout("_deviceTiltXAxis" , "Advanced Options");
44 addPropertyToFoldout("_deviceOrigin" , "Advanced Options");
45 addPropertyToFoldout("_preCullCamera" , "Advanced Options");
46 addPropertyToFoldout("_updateHandInPrecull" , "Advanced Options");
47 }
48
49 private void decorateAllowManualTimeAlignment(SerializedProperty property) {
50 bool pcOrAndroidPlatformDetected = false;
51 string targetPlatform = "";
52#if UNITY_STANDALONE
53 pcOrAndroidPlatformDetected = true;
54 targetPlatform = "Standalone (Desktop)";
55#elif UNITY_ANDROID
56 pcOrAndroidPlatformDetected = true;
57 targetPlatform = "Android";
58#endif
59
60 if (pcOrAndroidPlatformDetected && property.boolValue) {
61 EditorGUILayout.HelpBox(targetPlatform + " target platform detected; "
62 + "manual time alignment should not be enabled under most "
63 + "circumstances.", MessageType.Warning);
64 }
65 }
66
67 public override void OnSceneGUI() {
69 if (serializedObject.FindProperty("_deviceOffsetMode").enumValueIndex == 2 &&
70 xrProvider.deviceOrigin != null) {
71 controllerOffset = xrProvider.transform.InverseTransformPoint(xrProvider.deviceOrigin.position);
72 deviceRotation = Quaternion.Inverse(xrProvider.transform.rotation) *
73 xrProvider.deviceOrigin.rotation *
74 Quaternion.Euler(90f, 0f, 0f);
75 } else {
76 var vrProvider = target as LeapXRServiceProvider;
77
78 deviceRotation = Quaternion.Euler(90f, 0f, 0f) *
79 Quaternion.Euler(vrProvider.deviceTiltXAxis, 0f, 0f);
80
81 controllerOffset = new Vector3(0f,
82 vrProvider.deviceOffsetYAxis,
83 vrProvider.deviceOffsetZAxis);
84 }
85
86 base.OnSceneGUI();
87 }
88 }
89}
void specifyConditionalDrawing(string conditionalName, params string[] dependantProperties)
Specify a list of properties that should only be displayed if the conditional property has a value of...
void addPropertyToFoldout(string propertyName, string foldoutName, bool foldoutStartOpen=false)
Condition the drawing of a property based on the status of a foldout drop-down.
The LeapXRServiceProvider expands on the standard LeapServiceProvider to account for the offset of th...