Skip to content

Commit c94225d

Browse files
author
David Kline
authored
Merge pull request #3492 from Microsoft/beta2-stabilization
Beta2 stabilization -> mrtk development
2 parents ced2020 + 95e2070 commit c94225d

File tree

20 files changed

+878
-879
lines changed

20 files changed

+878
-879
lines changed

Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers/DefaultControllerPointer.prefab

Lines changed: 259 additions & 272 deletions
Large diffs are not rendered by default.

Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers/ParabolicPointer.prefab

Lines changed: 282 additions & 472 deletions
Large diffs are not rendered by default.

Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/BoundingBox/BoundingBox.cs

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
namespace Microsoft.MixedReality.Toolkit.SDK.UX
1515
{
16-
public class BoundingBox : BaseFocusHandler,
16+
public class BoundingBox : BaseFocusHandler,
1717
IMixedRealityInputHandler,
1818
IMixedRealityInputHandler<MixedRealityPose>,
1919
IMixedRealityPointerHandler,
@@ -250,7 +250,7 @@ public bool IsActive
250250
if (value)
251251
{
252252
CreateRig();
253-
rigRoot.SetActive(true);
253+
rigRoot.gameObject.SetActive(true);
254254
}
255255
else
256256
{
@@ -265,15 +265,15 @@ public bool IsActive
265265
private IMixedRealityInputSource currentInputSource;
266266
private Vector3 initialGazePoint = Vector3.zero;
267267
private GameObject targetObject;
268-
private GameObject rigRoot;
268+
private Transform rigRoot;
269269
private BoxCollider cachedTargetCollider;
270270
private Vector3[] boundsCorners;
271271
private Vector3 currentBoundsSize;
272272
private BoundsCalculationMethod boundsMethod;
273273
private HandleMoveType handleMoveType = HandleMoveType.Point;
274-
private List<GameObject> links;
275-
private List<GameObject> corners;
276-
private List<GameObject> balls;
274+
private List<Transform> links;
275+
private List<Transform> corners;
276+
private List<Transform> balls;
277277
private List<Renderer> cornerRenderers;
278278
private List<Renderer> ballRenderers;
279279
private List<Renderer> linkRenderers;
@@ -304,7 +304,7 @@ private void Start()
304304

305305
if (MixedRealityToolkit.IsInitialized && MixedRealityToolkit.InputSystem != null)
306306
{
307-
MixedRealityToolkit.InputSystem.Register(targetObject);
307+
MixedRealityToolkit.InputSystem.Register(targetObject);
308308
}
309309

310310
if (activateOnStart == true)
@@ -344,7 +344,7 @@ private void CreateRig()
344344
UpdateRigHandles();
345345
Flatten();
346346
ResetHandleVisibility();
347-
rigRoot.SetActive(false);
347+
rigRoot.gameObject.SetActive(false);
348348
}
349349

350350
private void DestroyRig()
@@ -530,7 +530,7 @@ private void AddCorners()
530530
var cubeRenderer = cube.GetComponent<Renderer>();
531531
cornerRenderers.Add(cubeRenderer);
532532
cornerColliders.Add(cube.GetComponent<Collider>());
533-
corners.Add(cube);
533+
corners.Add(cube.transform);
534534

535535
if (handleMaterial != null)
536536
{
@@ -556,7 +556,7 @@ private void AddLinks()
556556
var ballRenderer = ball.GetComponent<Renderer>();
557557
ballRenderers.Add(ballRenderer);
558558
ballColliders.Add(ball.GetComponent<Collider>());
559-
balls.Add(ball);
559+
balls.Add(ball.transform);
560560

561561
if (handleMaterial != null)
562562
{
@@ -615,7 +615,7 @@ private void AddLinks()
615615
linkRenderer.material = wireframeMaterial;
616616
}
617617

618-
links.Add(link);
618+
links.Add(link.transform);
619619
}
620620
}
621621

@@ -628,6 +628,7 @@ private void SetBoundingBoxCollider()
628628
if (boxColliderToUse != null)
629629
{
630630
cachedTargetCollider = boxColliderToUse;
631+
cachedTargetCollider.transform.hasChanged = true;
631632
}
632633
else
633634
{
@@ -695,9 +696,10 @@ private Bounds GetTargetBounds()
695696

696697
for (int i = 0; i < colliders.Length; ++i)
697698
{
698-
if (colliders[i].bounds.size != Vector3.zero)
699+
Bounds colliderBounds = colliders[i].bounds;
700+
if (colliderBounds.size != Vector3.zero)
699701
{
700-
bounds.Encapsulate(colliders[i].bounds);
702+
bounds.Encapsulate(colliderBounds);
701703
}
702704
}
703705

@@ -828,18 +830,18 @@ private void SetMaterials()
828830

829831
private void InitializeDataStructures()
830832
{
831-
rigRoot = new GameObject("rigRoot");
833+
rigRoot = new GameObject("rigRoot").transform;
832834
rigRoot.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector;
833835

834836
boundsCorners = new Vector3[8];
835837

836-
corners = new List<GameObject>();
838+
corners = new List<Transform>();
837839
cornerColliders = new List<Collider>();
838840
cornerRenderers = new List<Renderer>();
839-
balls = new List<GameObject>();
841+
balls = new List<Transform>();
840842
ballRenderers = new List<Renderer>();
841843
ballColliders = new List<Collider>();
842-
links = new List<GameObject>();
844+
links = new List<Transform>();
843845
linkRenderers = new List<Renderer>();
844846
}
845847

@@ -965,8 +967,9 @@ private void UpdateBounds()
965967

966968
if (cachedTargetCollider != null)
967969
{
968-
boundsSize = cachedTargetCollider.bounds.extents;
969-
centroid = cachedTargetCollider.bounds.center;
970+
Bounds colliderBounds = cachedTargetCollider.bounds;
971+
boundsSize = colliderBounds.extents;
972+
centroid = colliderBounds.center;
970973
}
971974

972975
//after bounds are computed, restore rotation...
@@ -1005,38 +1008,38 @@ private void UpdateRigHandles()
10051008
{
10061009
if (rigRoot != null && targetObject != null)
10071010
{
1008-
rigRoot.transform.rotation = Quaternion.identity;
1009-
rigRoot.transform.position = Vector3.zero;
1011+
rigRoot.rotation = Quaternion.identity;
1012+
rigRoot.position = Vector3.zero;
10101013

10111014
for (int i = 0; i < corners.Count; ++i)
10121015
{
1013-
corners[i].transform.position = boundsCorners[i];
1016+
corners[i].position = boundsCorners[i];
10141017
}
10151018

10161019
Vector3 linkDimensions = GetLinkDimensions();
10171020

10181021
for (int i = 0; i < edgeCenters.Length; ++i)
10191022
{
1020-
balls[i].transform.position = edgeCenters[i];
1021-
links[i].transform.position = edgeCenters[i];
1023+
balls[i].position = edgeCenters[i];
1024+
links[i].position = edgeCenters[i];
10221025

10231026
if (edgeAxes[i] == CardinalAxisType.X)
10241027
{
1025-
links[i].transform.localScale = new Vector3(linkRadius, linkDimensions.x, linkRadius);
1028+
links[i].localScale = new Vector3(linkRadius, linkDimensions.x, linkRadius);
10261029
}
10271030
else if (edgeAxes[i] == CardinalAxisType.Y)
10281031
{
1029-
links[i].transform.localScale = new Vector3(linkRadius, linkDimensions.y, linkRadius);
1032+
links[i].localScale = new Vector3(linkRadius, linkDimensions.y, linkRadius);
10301033
}
10311034
else
10321035
{
1033-
links[i].transform.localScale = new Vector3(linkRadius, linkDimensions.z, linkRadius);
1036+
links[i].localScale = new Vector3(linkRadius, linkDimensions.z, linkRadius);
10341037
}
10351038
}
10361039

10371040
//move rig into position and rotation
1038-
rigRoot.transform.position = cachedTargetCollider.bounds.center;
1039-
rigRoot.transform.rotation = targetObject.transform.rotation;
1041+
rigRoot.position = cachedTargetCollider.bounds.center;
1042+
rigRoot.rotation = targetObject.transform.rotation;
10401043
}
10411044
}
10421045

@@ -1261,7 +1264,7 @@ public void OnPointerDown(MixedRealityPointerEventData eventData) { }
12611264
public void OnPointerUp(MixedRealityPointerEventData eventData) { }
12621265
public void OnPointerClicked(MixedRealityPointerEventData eventData) { }
12631266
public void OnInputPressed(InputEventData<float> eventData) { }
1264-
public void OnPositionInputChanged(InputEventData<Vector2> eventData){}
1267+
public void OnPositionInputChanged(InputEventData<Vector2> eventData) { }
12651268
public void OnPositionChanged(InputEventData<Vector3> eventData) { }
12661269
public void OnRotationChanged(InputEventData<Quaternion> eventData) { }
12671270
public void OnSourceDetected(SourceStateEventData eventData) { }

Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers/LinePointer.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ namespace Microsoft.MixedReality.Toolkit.SDK.UX.Pointers
1515
[RequireComponent(typeof(DistorterGravity))]
1616
public class LinePointer : BaseControllerPointer
1717
{
18+
[Range(1, 50)]
19+
[SerializeField]
20+
[Tooltip("This setting has a high performance cost. Values above 20 are not recommended.")]
21+
protected int LineCastResolution = 10;
22+
1823
[SerializeField]
1924
protected Gradient LineColorSelected = new Gradient();
2025

@@ -30,10 +35,6 @@ public class LinePointer : BaseControllerPointer
3035
[SerializeField]
3136
protected Gradient LineColorLockFocus = new Gradient();
3237

33-
[Range(2, 100)]
34-
[SerializeField]
35-
protected int LineCastResolution = 25;
36-
3738
[SerializeField]
3839
private BaseMixedRealityLineDataProvider lineBase;
3940

Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Utilities/GazeHandHelper.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Microsoft.MixedReality.Toolkit.Core.EventDatum.Input;
77
using Microsoft.MixedReality.Toolkit.Core.Definitions.Utilities;
88
using UnityEngine;
9+
using System;
910

1011
namespace Microsoft.MixedReality.Toolkit.SDK.UX.Utilities
1112
{
@@ -141,6 +142,7 @@ public Vector3 GetHandsCentroid()
141142
/// This function gets an array of all active hand positions
142143
/// </summary>
143144
/// <returns>array of Vector3</returns>
145+
[Obsolete]
144146
public Vector3[] GetHandPositions()
145147
{
146148
List<Vector3> positions = new List<Vector3>();
@@ -156,14 +158,32 @@ public Vector3[] GetHandPositions()
156158
return positions.ToArray();
157159
}
158160

161+
/// <summary>
162+
/// This function gets an array of all active hand positions
163+
/// </summary>
164+
/// <returns>enumerable of Vector3</returns>
165+
public IEnumerable<Vector3> GetAllHandPositions()
166+
{
167+
foreach (uint key in positionAvailableMap.Keys)
168+
{
169+
if (positionAvailableMap[key] == true)
170+
{
171+
yield return handPositionMap[key];
172+
}
173+
}
174+
yield break;
175+
}
176+
159177
/// <summary>
160178
/// This function retrieves the position of the first active hand.
161179
/// </summary>
162180
/// <returns>Vector3 representing position</returns>
163181
public Vector3 GetFirstHand()
164182
{
165-
Vector3[] hands = GetHandPositions();
166-
return hands.Length > 0 ? hands[0] : Vector3.zero;
183+
foreach (Vector3 hand in GetAllHandPositions())
184+
return hand;
185+
186+
return Vector3.zero;
167187
}
168188

169189
/// <summary>

Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers/Orbital.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public override void SolverUpdate()
111111

112112
private Quaternion SnapToTetherAngleSteps(Quaternion rotationToSnap)
113113
{
114-
if (!UseAngleSteppingForWorldOffset)
114+
if (!UseAngleSteppingForWorldOffset || SolverHandler.TransformTarget == null)
115115
{
116116
return rotationToSnap;
117117
}
@@ -131,7 +131,7 @@ private Quaternion CalculateDesiredRotation(Vector3 desiredPos)
131131
switch (orientationType)
132132
{
133133
case SolverOrientationType.YawOnly:
134-
float targetYRotation = SolverHandler.TransformTarget != null ? SolverHandler.TransformTarget.eulerAngles.y : 1;
134+
float targetYRotation = SolverHandler.TransformTarget != null ? SolverHandler.TransformTarget.eulerAngles.y : 0.0f;
135135
desiredRot = Quaternion.Euler(0f, targetYRotation, 0f);
136136
break;
137137
case SolverOrientationType.Unmodified:
@@ -141,10 +141,10 @@ private Quaternion CalculateDesiredRotation(Vector3 desiredPos)
141141
desiredRot = CameraCache.Main.transform.rotation;
142142
break;
143143
case SolverOrientationType.FaceTrackedObject:
144-
desiredRot = Quaternion.LookRotation(SolverHandler.TransformTarget.position - desiredPos);
144+
desiredRot = SolverHandler.TransformTarget != null ? Quaternion.LookRotation(SolverHandler.TransformTarget.position - desiredPos) : Quaternion.identity;
145145
break;
146146
case SolverOrientationType.CameraFacing:
147-
desiredRot = Quaternion.LookRotation(CameraCache.Main.transform.position - desiredPos);
147+
desiredRot = SolverHandler.TransformTarget != null ? Quaternion.LookRotation(CameraCache.Main.transform.position - desiredPos) : Quaternion.identity;
148148
break;
149149
case SolverOrientationType.FollowTrackedObject:
150150
desiredRot = SolverHandler.TransformTarget != null ? SolverHandler.TransformTarget.rotation : Quaternion.identity;

Assets/MixedRealityToolkit.SDK/Inspectors/UX/Pointers/LinePointerInspector.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class LinePointerInspector : BaseControllerPointerInspector
1818
private SerializedProperty lineRenderers;
1919

2020
private bool linePointerFoldout = true;
21+
private const int maxRecommendedLinecastResolution = 20;
2122

2223
protected override void OnEnable()
2324
{
@@ -42,12 +43,19 @@ public override void OnInspectorGUI()
4243
if (linePointerFoldout)
4344
{
4445
EditorGUI.indentLevel++;
46+
47+
int lineCastResolutionValue = lineCastResolution.intValue;
48+
if (lineCastResolutionValue > maxRecommendedLinecastResolution)
49+
{
50+
EditorGUILayout.LabelField("Note: values above " + maxRecommendedLinecastResolution + " should only be used when your line is expected to be highly non-uniform.", EditorStyles.miniLabel);
51+
}
52+
53+
EditorGUILayout.PropertyField(lineCastResolution);
4554
EditorGUILayout.PropertyField(lineColorSelected);
4655
EditorGUILayout.PropertyField(lineColorValid);
4756
EditorGUILayout.PropertyField(lineColorInvalid);
4857
EditorGUILayout.PropertyField(lineColorNoTarget);
4958
EditorGUILayout.PropertyField(lineColorLockFocus);
50-
EditorGUILayout.PropertyField(lineCastResolution);
5159
EditorGUILayout.PropertyField(lineRenderers, true);
5260
EditorGUI.indentLevel--;
5361
}

Assets/MixedRealityToolkit.SDK/StandardAssets/Materials/MRTK_DefaultPointerLine.mat

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ Material:
55
serializedVersion: 6
66
m_ObjectHideFlags: 0
77
m_CorrespondingSourceObject: {fileID: 0}
8-
m_PrefabInternal: {fileID: 0}
8+
m_PrefabInstance: {fileID: 0}
9+
m_PrefabAsset: {fileID: 0}
910
m_Name: MRTK_DefaultPointerLine
1011
m_Shader: {fileID: 4800000, guid: 5bdea20278144b11916d77503ba1467a, type: 3}
1112
m_ShaderKeywords: _BORDER_LIGHT_USES_HOVER_COLOR _DISABLE_ALBEDO_MAP _SPECULAR_HIGHLIGHTS
13+
_VERTEX_COLORS
1214
m_LightmapFlags: 4
1315
m_EnableInstancingVariants: 0
1416
m_DoubleSidedGI: 0
@@ -73,9 +75,14 @@ Material:
7375
- _BorderMinValue: 0.1
7476
- _BorderWidth: 0.1
7577
- _BumpScale: 1
78+
- _ClippingBorder: 0
79+
- _ClippingBorderWidth: 0.025
80+
- _ClippingBox: 0
7681
- _ClippingPlane: 0
7782
- _ClippingPlaneBorder: 0
7883
- _ClippingPlaneBorderWidth: 0.025
84+
- _ClippingSphere: 0
85+
- _ColorMask: 15
7986
- _ColorWriteMask: 15
8087
- _CullMode: 2
8188
- _CustomMode: 0
@@ -122,17 +129,25 @@ Material:
122129
- _Smoothness: 0.5
123130
- _SmoothnessTextureChannel: 0
124131
- _SpecularHighlights: 1
132+
- _SphericalHarmonics: 0
125133
- _SrcBlend: 1
126134
- _Stencil: 0
135+
- _StencilComp: 8
127136
- _StencilComparison: 0
137+
- _StencilOp: 0
128138
- _StencilOperation: 0
139+
- _StencilReadMask: 255
129140
- _StencilReference: 0
141+
- _StencilWriteMask: 255
130142
- _TriplanarMappingBlendSharpness: 4
131143
- _UVSec: 0
144+
- _UseUIAlphaClip: 0
145+
- _VertexColors: 1
132146
- _ZTest: 4
133147
- _ZWrite: 1
134148
m_Colors:
135149
- _ClipPlane: {r: 0, g: 1, b: 0, a: 0}
150+
- _ClippingBorderColor: {r: 1, g: 0.2, b: 0, a: 1}
136151
- _ClippingPlaneBorderColor: {r: 1, g: 0.2, b: 0, a: 1}
137152
- _Color: {r: 1, g: 1, b: 1, a: 1}
138153
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

0 commit comments

Comments
 (0)