8000 Feature/controller mapping refactor by StephenHodgson · Pull Request #67 · XRTK/com.xrtk.lumin · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
This repository was archived by the owner on May 13, 2022. It is now read-only.

Feature/controller mapping refactor #67

Merged
merged 54 commits into from
Apr 26, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
feeadb6
updated lumin controller data provider
StephenHodgson Apr 6, 2020
1f65526
added controller data provider reference to the controller
StephenHodgson Apr 7, 2020
75a98d7
Merge branch 'dev/data-provider' into feature/controller-mapping-refa…
StephenHodgson Apr 7, 2020
8817174
updated references
StephenHodgson Apr 7, 2020
0e2b150
updated profile reference
StephenHodgson Apr 7, 2020
c6e9617
Merge branch 'development' into feature/controller-mapping-refactor
StephenHodgson Apr 7, 2020
bf15e21
updated references
StephenHodgson Apr 7, 2020
733e9bb
Added default controller definitions
StephenHodgson Apr 7, 2020
1804619
removed redundant action assignments in mappings
StephenHodgson Apr 9, 2020
f184f70
updated references
StephenHodgson Apr 9, 2020
f36d06d
added axis processor check
StephenHodgson Apr 9, 2020
7102173
Fixed inspector
StephenHodgson Apr 9, 2020
b960bb9
updated controller instance creation
StephenHodgson Apr 9, 2020
82e5af4
added a default constructor
StephenHodgson Apr 9, 2020
d82b617
fixed TryRenderControllerModel call
StephenHodgson Apr 10, 2020
d098d9f
removed unused reference
StephenHodgson Apr 11, 2020
dea329b
removed asset menu
StephenHodgson Apr 11, 2020
9dd28d0
Remove obsolete SetupDefaultInteractions (#59)
FejZa Apr 11, 2020
5e8e757
removed reference to input processor
StephenHodgson Apr 11, 2020
982009e
updated reference to camera rig
StephenHodgson Apr 11, 2020
108a804
updated platform flag to only be true on device
StephenHodgson Apr 11, 2020
aaf8b56
Merge branch 'fix/platform' into dev/camera-system-refactor
StephenHodgson Apr 11, 2020
6ee1a55
updated hand inspector
StephenHodgson Apr 12, 2020
00f4429
Merge branch 'development' into dev/camera-system-refactor
StephenHodgson Apr 12, 2020
a9eed8b
Merge branch 'dev/camera-system-refactor' into feature/controller-map…
StephenHodgson Apr 12, 2020
7ae8d55
Added Lumin camera data provider
StephenHodgson Apr 13, 2020
69a2e92
updated lumin platform definition
StephenHodgson Apr 13, 2020
3fb5675
Merge branch 'dev/platform-refactor' into dev/camera-system-refactor
StephenHodgson Apr 13, 2020
ac78aab
Merge branch 'dev/camera-system-refactor' into feature/controller-map…
StephenHodgson Apr 13, 2020
c5efa56
updated icon
StephenHodgson Apr 13, 2020
9673700
Added default lumin camera data provider profile
StephenHodgson Apr 13, 2020
8f998c6
Merge branch 'dev/camera-system-refactor' into feature/controller-map…
StephenHodgson Apr 13, 2020
d0e7b26
reverted name change
StephenHodgson Apr 13, 2020
764fb00
Merge branch 'dev/platform-refactor' into dev/camera-system-refactor
StephenHodgson Apr 13, 2020
c27bc80
Merge branch 'dev/camera-system-refactor' into feature/controller-map…
StephenHodgson Apr 13, 2020
3298634
Updated constructors for data providers
StephenHodgson Apr 14, 2020
20670aa
Merge branch 'development' into dev/camera-system-refactor
StephenHodgson Apr 14, 2020
3cfe9b5
Merge branch 'dev/camera-system-refactor' into feature/controller-map…
StephenHodgson Apr 14, 2020
5468ea8
Merge branch 'development' into dev/data-providers
StephenHodgson Apr 14, 2020
e9e3096
Merge branch 'dev/data-providers' into dev/camera-system-refactor
StephenHodgson Apr 14, 2020
91f4ae0
Added service parent reference
StephenHodgson Apr 14, 2020
56293dc
Merge branch 'dev/camera-system-refactor' into feature/controller-map…
StephenHodgson Apr 14, 2020
1b2b33d
cleaned up referenece
StephenHodgson Apr 14, 2020
667a65d
updated nearclip distance
StephenHodgson Apr 14, 2020
723e71a
Merge branch 'dev/camera-system-refactor' into feature/controller-map…
StephenHodgson Apr 14, 2020
da9ed10
Change requests for controller provider inspectors (#63)
FejZa Apr 15, 2020
4a504c6
updated lumin camera settings
StephenHodgson Apr 19, 2020
cef1965
updated lumin camera data provider
StephenHodgson Apr 19, 2020
bcfcbf3
only reset local positions
StephenHodgson Apr 19, 2020
b6868df
Merge branch 'dev/camera-system-refactor' into feature/controller-map…
StephenHodgson Apr 19, 2020
dd380f8
Merge branch 'development' into dev/camera-system-refactor
StephenHodgson Apr 19, 2020
8156d4b
Merge branch 'dev/camera-system-refactor' into feature/controller-map…
StephenHodgson Apr 19, 2020
6a84c5b
Merge branch 'development' into feature/controller-mapping-refactor
StephenHodgson Apr 23, 2020
e79ab1e
Merge branch 'development' into feature/controller-mapping-refactor
StephenHodgson Apr 24, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 18 additions & 20 deletions XRTK.Lumin/Packages/com.xrtk.lumin/Controllers/LuminController.cs
Original file line number Diff line number Diff line change
@@ -1,42 +1,45 @@
// Copyright (c) XRTK. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using XRTK.Definitions.Controllers;
using XRTK.Definitions.Devices;
using XRTK.Definitions.InputSystem;
using XRTK.Definitions.Utilities;
using XRTK.Interfaces.InputSystem;
using XRTK.Interfaces.Providers.Controllers;
using XRTK.Providers.Controllers;

#if PLATFORM_LUMIN

using UnityEngine;
using UnityEngine.XR.MagicLeap;
using XRTK.Extensions;
using XRTK.Services;

#endif

namespace XRTK.Lumin.Controllers
{
public class LuminController : BaseController
{
public LuminController() : base() { }

/// <inheritdoc />
public LuminController(IMixedRealityControllerDataProvider controllerDataProvider, TrackingState trackingState, Handedness controllerHandedness, IMixedRealityInputSource inputSource = null, MixedRealityInteractionMapping[] interactions = null)
: base(controllerDataProvider, trackingState, controllerHandedness, inputSource, interactions)
public LuminController(IMixedRealityControllerDataProvider controllerDataProvider, TrackingState trackingState, Handedness controllerHandedness, MixedRealityControllerMappingProfile controllerMappingProfile)
: base(controllerDataProvider, trackingState, controllerHandedness, controllerMappingProfile)
{
}

/// <inheritdoc />
public override MixedRealityInteractionMapping[] DefaultInteractions => new[]
{
new MixedRealityInteractionMapping(0, "Spatial Pointer", AxisType.SixDof, DeviceInputType.SpatialPointer, MixedRealityInputAction.None),
new MixedRealityInteractionMapping(1, "Trigger Position", AxisType.SingleAxis, DeviceInputType.Trigger, MixedRealityInputAction.None),
new MixedRealityInteractionMapping(2, "Trigger Touch", AxisType.Digital, DeviceInputType.TriggerTouch, MixedRealityInputAction.None),
new MixedRealityInteractionMapping(3, "Trigger Press (Select)", AxisType.Digital, DeviceInputType.Select, MixedRealityInputAction.None),
new MixedRealityInteractionMapping(4, "Bumper Press", AxisType.Digital, DeviceInputType.ButtonPress, MixedRealityInputAction.None),
new MixedRealityInteractionMapping(5, "Home Press", AxisType.Digital, DeviceInputType.ButtonPress, MixedRealityInputAction.None),
new MixedRealityInteractionMapping(6, "Touchpad Position", AxisType.DualAxis, DeviceInputType.Touchpad, MixedRealityInputAction.None),
new MixedRealityInteractionMapping(7, "Touchpad Press", AxisType.SingleAxis, DeviceInputType.TouchpadPress, MixedRealityInputAction.None),
new MixedRealityInteractionMapping(8, "Touchpad Touch", AxisType.SingleAxis, DeviceInputType.TouchpadTouch, MixedRealityInputAction.None),
new MixedRealityInteractionMapping("Spatial Pointer", AxisType.SixDof, DeviceInputType.SpatialPointer),
new MixedRealityInteractionMapping("Trigger Position", AxisType.SingleAxis, DeviceInputType.Trigger),
new MixedRealityInteractionMapping("Trigger Touch", AxisType.Digital, DeviceInputType.TriggerTouch),
new MixedRealityInteractionMapping("Trigger Press (Select)", AxisType.Digital, DeviceInputType.Select),
new MixedRealityInteractionMapping("Bumper Press", AxisType.Digital, DeviceInputType.ButtonPress),
new MixedRealityInteractionMapping("Home Press", AxisType.Digital, DeviceInputType.ButtonPress),
new MixedRealityInteractionMapping("Touchpad Position", AxisType.DualAxis, DeviceInputType.Touchpad),
new MixedRealityInteractionMapping("Touchpad Press", AxisType.SingleAxis, DeviceInputType.TouchpadPress),
new MixedRealityInteractionMapping("Touchpad Touch", AxisType.SingleAxis, DeviceInputType.TouchpadTouch),
};

/// <inheritdoc />
Expand All @@ -45,12 +48,6 @@ public LuminController(IMixedRealityControllerDataProvider controllerDataProvide
/// <inheritdoc />
public override MixedRealityInteractionMapping[] DefaultRightHandedInteractions => DefaultInteractions;

/// <inheritdoc />
public override void SetupDefaultInteractions(Handedness controllerHandedness)
{
AssignControllerMappings(DefaultInteractions);
}

#if PLATFORM_LUMIN

internal MLInputController MlControllerReference { get; set; }
Expand Down Expand Up @@ -201,7 +198,8 @@ private void UpdateSingleAxisData(MixedRealityInteractionMapping interactionMapp
case DeviceInputType.Trigger:
case DeviceInputType.TriggerPress:
case DeviceInputType.TouchpadPress:
interactionMapping.BoolData = interactionMapping.FloatData.Equals(interactionMapping.InvertXAxis ? -1f : 1f);
interactionMapping.BoolData = interactionMapping.FloatData.Approximately(1f, 0.001f) ||
interactionMapping.FloatData.Approximately(-1f, 0.001f);
break;
case DeviceInputType.TriggerTouch:
case DeviceInputType.TouchpadTouch:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
// Copyright (c) XRTK. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using XRTK.Definitions.Controllers;
using XRTK.Lumin.Profiles;
using XRTK.Interfaces.InputSystem;
using XRTK.Providers.Controllers;

#if PLATFORM_LUMIN

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.MagicLeap;
Expand All @@ -21,7 +22,7 @@ namespace XRTK.Lumin.Controllers
public class LuminControllerDataProvider : BaseControllerDataProvider
{
/// <inheritdoc />
public LuminControllerDataProvider(string name, uint priority, BaseMixedRealityControllerDataProviderProfile profile, IMixedRealityInputSystem parentService)
public LuminControllerDataProvider(string name, uint priority, LuminControllerDataProviderProfile profile, IMixedRealityInputSystem parentService)
: base(name, priority, profile, parentService)
{
}
Expand Down Expand Up @@ -110,35 +111,31 @@ private LuminController GetController(byte controllerId, bool addController = tr

if (mlController.Type == MLInputControllerType.None) { return null; }

var controllingHand = Handedness.Any;
var handedness = Handedness.Any;

if (mlController.Type == MLInputControllerType.Control)
{
switch (mlController.Hand)
{
case MLInput.Hand.Left:
controllingHand = Handedness.Left;
handedness = Handedness.Left;
break;
case MLInput.Hand.Right:
controllingHand = Handedness.Right;
handedness = Handedness.Right;
break;
}
}

var pointers = mlController.Type == MLInputControllerType.Control ? RequestPointers(typeof(LuminController), controllingHand) : null;
var inputSource = MixedRealityToolkit.InputSystem?.RequestNewGenericInputSource($"Lumin Controller {controllingHand}", pointers);
var detectedController = new LuminController(this, TrackingState.NotTracked, controllingHand, inputSource);
LuminController detectedController;

if (!detectedController.SetupConfiguration(typeof(LuminController)))
try
{
// Controller failed to be setup correctly.
// Return null so we don't raise the source detected.
return null;
detectedController = new LuminController(this, TrackingState.NotTracked, handedness, GetControllerMappingProfile(typeof(LuminController), handedness));
}

for (int i = 0; i < detectedController.InputSource?.Pointers?.Length; i++)
catch (Exception e)
{
detectedController.InputSource.Pointers[i].Controller = detectedController;
Debug.LogError($"Failed to create {nameof(LuminController)}!\n{e}");
return null;
}

detectedController.MlControllerReference = mlController;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,24 +112,19 @@ private MixedRealityHandController GetOrAddController(Handedness handedness)
return existingController;
}

var controllerType = typeof(MixedRealityHandController);
var pointers = RequestPointers(controllerType, handedness, true);
var inputSource = MixedRealityToolkit.InputSystem.RequestNewGenericInputSource($"{handedness} Hand Controller", pointers);
var detectedController = new MixedRealityHandController(this, TrackingState.Tracked, handedness, inputSource);
MixedRealityHandController detectedController;

if (!detectedController.SetupConfiguration(controllerType))
try
{
// Controller failed to be setup correctly.
// Return null so we don't raise the source detected.
return null;
detectedController = new MixedRealityHandController(this, TrackingState.Tracked, handedness, GetControllerMappingProfile(typeof(MixedRealityHandController), handedness));
}

for (int i = 0; i < detectedController.InputSource?.Pointers?.Length; i++)
catch (Exception e)
{
detectedController.InputSource.Pointers[i].Controller = detectedController;
Debug.LogError($"Failed to create {nameof(MixedRealityHandController)}!\n{e}");
return null;
}

detectedController.TryRenderControllerModel(controllerType);
detectedController.TryRenderControllerModel();

activeControllers.Add(handedness, detectedController);
AddController(detectedController);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
// Copyright (c) XRTK. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

#if PLATFORM_LUMIN

using UnityEditor;
using UnityEngine;
using XRTK.Inspectors.Extensions;
using XRTK.Inspectors.Profiles.InputSystem.Controllers;
using XRTK.Lumin.Profiles;

#if PLATFORM_LUMIN
using UnityEngine.XR.MagicLeap;
#endif // PLATFORM_LUMIN

namespace XRTK.Lumin.Inspectors
{
Expand All @@ -17,36 +19,49 @@ public class LuminHandControllerDataProviderProfileInspector : BaseMixedRealityH
private SerializedProperty poseFilterLevel;
private SerializedProperty keyPointFilterLevel;

private static readonly GUIContent handTrackingFoldoutHeader = new GUIContent("Lumin Hand Tracking Settings");

#if PLATFORM_LUMIN
private GUIContent keyPointContent;
private GUIContent poseFilterContent;
#endif // PLATFORM_LUMIN

private bool showLuminHandTrackingSettings = true;

protected override void OnEnable()
{
base.OnEnable();

keyPointFilterLevel = serializedObject.FindProperty(nameof(keyPointFilterLevel));
keyPointContent = new GUIContent(keyPointFilterLevel.displayName, keyPointFilterLevel.tooltip);
poseFilterLevel = serializedObject.FindProperty(nameof(poseFilterLevel));

#if PLATFORM_LUMIN
keyPointContent = new GUIContent(keyPointFilterLevel.displayName, keyPointFilterLevel.tooltip);
poseFilterContent = new GUIContent(poseFilterLevel.displayName, poseFilterLevel.tooltip);
#endif // PLATFORM_LUMIN
}

public override void OnInspectorGUI()
{
RenderHeader();

EditorGUILayout.LabelField("Lumin Hand Controller Data Provider Settings", EditorStyles.boldLabel);

base.OnInspectorGUI();
serializedObject.Update();

EditorGUILayout.Space();
EditorGUILayout.LabelField("Lumin Hand Settings");
serializedObject.Update();

showLuminHandTrackingSettings = EditorGUILayoutExtensions.FoldoutWithBoldLabel(showLuminHandTrackingSettings, handTrackingFoldoutHeader, true);
if (showLuminHandTrackingSettings)
{
EditorGUI.indentLevel++;
#if PLATFORM_LUMIN
keyPointFilterLevel.intValue = (int)(MLKeyPointFilterLevel)EditorGUILayout.EnumPopup(keyPointContent, (MLKeyPointFilterLevel)keyPointFilterLevel.intValue);
poseFilterLevel.intValue = (int)(MLPoseFilterLevel)EditorGUILayout.EnumPopup(poseFilterContent, (MLPoseFilterLevel)poseFilterLevel.intValue);
#else
EditorGUILayout.PropertyField(keyPointFilterLevel);
EditorGUILayout.PropertyField(poseFilterLevel);
#endif // PLATFORM_LUMIN
EditorGUI.indentLevel--;
}

serializedObject.ApplyModifiedProperties();
}
}
}
#endif // PLATFORM_LUMIN
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Copyright (c) XRTK. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using XRTK.Definitions.Controllers;
using XRTK.Definitions.Utilities;
using XRTK.Lumin.Controllers;

namespace XRTK.Lumin.Profiles
{
public class LuminControllerDataProviderProfile : BaseMixedRealityControllerDataProviderProfile
{
public override ControllerDefinition[] GetDefaultControllerOptions()
{
return new[]
{
new ControllerDefinition(typeof(LuminController), Handedness.Left),
new ControllerDefinition(typeof(LuminController), Handedness.Right)
};
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,11 @@

using UnityEngine;
using XRTK.Definitions.Controllers.Hands;
using XRTK.Definitions.Utilities;

namespace XRTK.Lumin.Profiles
{
[CreateAssetMenu(menuName = "Mixed Reality Toolkit/Input System/Controller Data Providers/Lumin Hand", fileName = "LuminHandControllerDataProviderProfile", order = (int)CreateProfileMenuItemIndices.Input)]
public class LuminHandControllerDataProviderProfile : BaseHandControllerDataProviderProfile
{
[Header("Lumin Platform Settings")]

[SerializeField]
[Tooltip("Configured level for keypoints filtering of keypoints and hand centers.")]
private int keyPointFilterLevel = 0;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
using UnityEngine.XR.MagicLeap;
using XRTK.Definitions.SpatialAwarenessSystem;
using XRTK.Services;
using XRTK.Utilities;

#endif // PLATFORM_LUMIN

namespace XRTK.Lumin.SpatialObservers
Expand Down
0