From a0509bb9162deb92b9005626535b8af1291c5dda Mon Sep 17 00:00:00 2001 From: Shariff Faleel Date: Tue, 23 Jan 2024 15:13:49 -0800 Subject: [PATCH] Add UI prefab & add UI functions to components --- Editor/HPUIContinuousInteractableEditor.cs | 28 +- Runtime/{Prefabs.meta => Assets.meta} | 0 Runtime/Assets/HPUIContinousUI.prefab | 587 ++++++++++++++++++ .../HPUIContinousUI.prefab.meta | 2 +- Runtime/Assets/load.png | Bin 0 -> 2607 bytes Runtime/Assets/load.png.meta | 140 +++++ Runtime/Assets/square.png | Bin 0 -> 429 bytes Runtime/Assets/square.png.meta | 135 ++++ .../Interaction/HPUIContinuousInteractable.cs | 16 +- Runtime/Prefabs/HPUIContinousUI.prefab | 317 ---------- Runtime/UI/HPUIContinuousInteractableUI.cs | 28 +- Runtime/ubco.ovilab.HPUI.asmdef | 3 +- package.json | 3 +- 13 files changed, 927 insertions(+), 332 deletions(-) rename Runtime/{Prefabs.meta => Assets.meta} (100%) create mode 100644 Runtime/Assets/HPUIContinousUI.prefab rename Runtime/{Prefabs => Assets}/HPUIContinousUI.prefab.meta (74%) create mode 100644 Runtime/Assets/load.png create mode 100644 Runtime/Assets/load.png.meta create mode 100644 Runtime/Assets/square.png create mode 100644 Runtime/Assets/square.png.meta delete mode 100644 Runtime/Prefabs/HPUIContinousUI.prefab diff --git a/Editor/HPUIContinuousInteractableEditor.cs b/Editor/HPUIContinuousInteractableEditor.cs index 3540b11..a7d155e 100644 --- a/Editor/HPUIContinuousInteractableEditor.cs +++ b/Editor/HPUIContinuousInteractableEditor.cs @@ -3,6 +3,7 @@ using ubco.ovilab.HPUI.Interaction; using System.Collections.Generic; using System.Linq; +using ubco.ovilab.HPUI.UI; namespace ubco.ovilab.HPUI.Editor { @@ -10,31 +11,52 @@ namespace ubco.ovilab.HPUI.Editor [CustomEditor(typeof(HPUIContinuousInteractable), true)] public class HPUIContinuousInteractableEditor: HPUIBaseInteractableEditor { + private const string UIPrefab = "Packages/ubc.ok.ovilab.hpui-core/Runtime/Assets/HPUIContinousUI.prefab"; private HPUIContinuousInteractable t; + private SerializedProperty uiProp; + protected override List EventPropertyNames => base.EventPropertyNames.Union(new List() { "continuousSurfaceCreatedEvent", - "boundsCollider" // NOTE: this is not relevant to the HPUIContinuousInteractable. + "boundsCollider", // NOTE: this is not relevant to the HPUIContinuousInteractable. + "ui" }).ToList(); protected override void OnEnable() { base.OnEnable(); t = target as HPUIContinuousInteractable; + uiProp = serializedObject.FindProperty("ui"); + } + + /// + protected override void DrawInspector() + { + base.DrawInspector(); + EditorGUILayout.PropertyField(uiProp); + if (uiProp.objectReferenceValue == null) + { + if (GUILayout.Button(new GUIContent("Instantiate & add UI", "Instantiate UI for continuous interface generation and add it"))) + { + GameObject uiObj = PrefabUtility.InstantiatePrefab(AssetDatabase.LoadAssetAtPath(UIPrefab)) as GameObject; + uiProp.objectReferenceValue = uiObj.GetComponent(); + Debug.Log($"[[[{uiProp.objectReferenceValue}]]]"); + } + } } public override void OnInspectorGUI() { base.OnInspectorGUI(); GUI.enabled = EditorApplication.isPlaying; - if (GUILayout.Button("Manual recompute")) + if (GUILayout.Button(new GUIContent("Manual recompute", "Assuming the the corresponding hand is held straight, compute and generate the surface"))) { foreach (Object t in targets) { (t as HPUIContinuousInteractable)?.ManualRecompute(); } } - if (GUILayout.Button("Automated recompute")) + if (GUILayout.Button(new GUIContent("Automated recompute", "Intiate the process to estimate the joint locations and generate the surface"))) { foreach (Object t in targets) { diff --git a/Runtime/Prefabs.meta b/Runtime/Assets.meta similarity index 100% rename from Runtime/Prefabs.meta rename to Runtime/Assets.meta diff --git a/Runtime/Assets/HPUIContinousUI.prefab b/Runtime/Assets/HPUIContinousUI.prefab new file mode 100644 index 0000000..62f8aef --- /dev/null +++ b/Runtime/Assets/HPUIContinousUI.prefab @@ -0,0 +1,587 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1129201903998229771 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8514230003230509469} + - component: {fileID: 911956799047898490} + - component: {fileID: 3720626775065067102} + m_Layer: 5 + m_Name: backplate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8514230003230509469 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1129201903998229771} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8057171089328779076} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &911956799047898490 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1129201903998229771} + m_CullTransparentMesh: 1 +--- !u!114 &3720626775065067102 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1129201903998229771} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 2bf62cea73f52f7448758b2229ac7a2c, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1781999798987360290 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5700613623758424264} + - component: {fileID: 8273572096013570844} + - component: {fileID: 4927096929843202305} + - component: {fileID: 8834169227400072103} + m_Layer: 5 + m_Name: UIRoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5700613623758424264 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1781999798987360290} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8057171089328779076} + - {fileID: 8307403862940177093} + - {fileID: 837003313595197312} + m_Father: {fileID: 1332117685303052191} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &8273572096013570844 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1781999798987360290} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &4927096929843202305 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1781999798987360290} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &8834169227400072103 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1781999798987360290} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &2052054050421730822 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8057171089328779076} + m_Layer: 5 + m_Name: Progress + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8057171089328779076 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2052054050421730822} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8514230003230509469} + - {fileID: 4772579558201782341} + m_Father: {fileID: 5700613623758424264} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2505504425789366122 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 837003313595197312} + - component: {fileID: 3918001943441469676} + m_Layer: 0 + m_Name: InProgress + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &837003313595197312 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2505504425789366122} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -255, y: -161, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5700613623758424264} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &3918001943441469676 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2505504425789366122} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 6b87b55905e88754499721a7d0c2cee8, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.64, y: 0.64} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &3269210596706019582 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1332117685303052191} + - component: {fileID: 5623869974037214166} + - component: {fileID: 1656530205748981197} + m_Layer: 0 + m_Name: HPUIContinousUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1332117685303052191 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3269210596706019582} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5700613623758424264} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5623869974037214166 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3269210596706019582} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15ae6f2cc8c7dc648b5ee5f8aa7db9e9, type: 3} + m_Name: + m_EditorClassIdentifier: + jointFollower: {fileID: 1656530205748981197} + UIRoot: {fileID: 5700613623758424264} + progressBarImage: {fileID: 440902902859121668} + inProgressObj: {fileID: 837003313595197312} + textMessage: {fileID: 4872272637747068778} +--- !u!114 &1656530205748981197 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3269210596706019582} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0f267dc9e93377f4897f95ac98ef2889, type: 3} + m_Name: + m_EditorClassIdentifier: + jointFollowerData: + m_UseConstant: 1 + m_ConstantValue: + handedness: 2 + jointID: 12 + useSecondJointID: 0 + secondJointID: 0 + defaultJointRadius: 0.01 + offsetAngle: 0 + offsetAsRatioToRadius: 1 + longitudinalOffset: 0 + m_Variable: {fileID: 0} + targetTransform: {fileID: 0} +--- !u!1 &3647077103760072034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8307403862940177093} + - component: {fileID: 6497595770705256839} + - component: {fileID: 4872272637747068778} + m_Layer: 5 + m_Name: Message + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8307403862940177093 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3647077103760072034} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5700613623758424264} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 15} + m_SizeDelta: {x: 50, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6497595770705256839 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3647077103760072034} + m_CullTransparentMesh: 1 +--- !u!114 &4872272637747068778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3647077103760072034} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: New Text + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 4 + m_fontSizeBase: 4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 1024 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &7405175512251389187 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4772579558201782341} + - component: {fileID: 3014686523139660575} + - component: {fileID: 440902902859121668} + m_Layer: 5 + m_Name: frontplate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4772579558201782341 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7405175512251389187} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8057171089328779076} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 19, y: 4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3014686523139660575 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7405175512251389187} + m_CullTransparentMesh: 1 +--- !u!114 &440902902859121668 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7405175512251389187} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0.46226418, b: 0.078125805, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 2bf62cea73f52f7448758b2229ac7a2c, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Runtime/Prefabs/HPUIContinousUI.prefab.meta b/Runtime/Assets/HPUIContinousUI.prefab.meta similarity index 74% rename from Runtime/Prefabs/HPUIContinousUI.prefab.meta rename to Runtime/Assets/HPUIContinousUI.prefab.meta index e7a1e76..0609458 100644 --- a/Runtime/Prefabs/HPUIContinousUI.prefab.meta +++ b/Runtime/Assets/HPUIContinousUI.prefab.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d26f41e57bf50cd4d8d3a53dc066981e +guid: b14826b7671331d46bc26c2b51d37625 PrefabImporter: externalObjects: {} userData: diff --git a/Runtime/Assets/load.png b/Runtime/Assets/load.png new file mode 100644 index 0000000000000000000000000000000000000000..afed76968b96374aeac79d5032975fe2aaff0d26 GIT binary patch literal 2607 zcmV+~3efe5P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ943B*Z6K~#8NJP!D zs6YIosrp0EF4;s7MVC!Q#Yy8-&<(fvF{f^>KF@p3y=~guwrQK1v`;ua_x7ILd!Fb0 zIOp7Z<2qGF`v;FiwHu0sT-Bgm-Kt&Xgj^j%9SON1hx=M-)J$1h{!u0tEF&5NHSSs8S&5Y9|b`3Zz5WSJ=mK2NF0+xj1IUkb-Tr;c@I2 zaE=VN29j&;&f81O8|F=bw%miTsOmtcx1dB7EltZh#=?e-DQGuV^BCJ`6n?A_A`WU# zJZ|Gi0qy&+pYFWywxYfCoG@nruFYr%E$6=PNcG!5SuMaTQm zg;qn9q|o6}(>W=Ob?LBMM5l8odE|hd_>c4S6%Xg^seJT&@qDWx9$F6(VmN;*+A^#x zX(Ix^PtkZiIX^$H$|2n1x17^dal))vfTkUt9dOZJbjW0Jc8Hd?#KnrR4E~=%2ZsjM zJ(jUwtr*Yjd#xSkxgFPHGDWD3c@%3Agx91H7)2m@^7@rmrR~>ego*@c8t&|cH46aTHpO+*>yfE?>#MT|4y#yRYosc$aGZMu2t^`<9#Z1bw&weNRy;kqW_N*|2)^u%%AkY0DjWpVqJ zDKR4ft{(0j1j%+@%qvC!xo8gC@zNS@bdD8OeBriyE>h6+dsq z%Ce(FSpgc~yEh7}?*>sBhdJa}_hPbZ8*1KOGvqyddgyB|xU%#FFAvaQw*N(p9BWrD zKYdc3QnoGu$Rp$H2;)e|+k(?3Ymq#0`RQx&uym574SCadnJ_68!Ct>@T7pReH0`)Q z0kW8tnK&{6h@z=CTeep;$yjJycG^X0^c8Ca^w$i}=r?)5doi>8?bwloZR(>W1e%9C zVfD}m6(e~$0Z-)U{7}pGwYFK!qj2OWhA%_Hc!G>z;t2?0b-{9dl0Qi+@c@wKsxC6- zLPkB*Gn!P?3eflX7xv@KWn4AHWAzT#3FOhvKkBAki73djKn)0hF_YO7uJgYybmj>` zJQxO11>$^2VUwSYe^=#RT-RNf$!{WD*Cmfh_aH4|6rjNnrvM@Y>$)2EXMi9+4GOcP zRuY#4NFmH9u*Wu7EC}M$N)HgXx5UK*AWB_l|1t>VqmcA42k_?ppl^g&Dj^UfT`YcR zdDz{G@Z6P;E{X)`!6w3Th`y}TGOe*HfIMS4J9E@sJxOA^@yCfEfVC16dTAoS@sE-SWN4G$q=%sv{=*($fRJ+2 z7!r#N1T!2mAan%VCC}382<&$`<8f*1KjroXNM3vo*90l?0FDMYWNO|0%KmrjYF+^A zv%lSDZxT}D?+^F_5Eugc5cje;;`_ViKB0s~*_R7y7(x9d@sekqB?4?-y@3xCd%Qfr z+RP19?5!W)@3qZp8n8b58RW4&6Yma{eP;C1ckg7wm<^8e05eB$b^NBY8*BD05s>Fo z-yrMfK)%gx`zY}M53qh5p3|H}{HIM0aE%whBM>5dQF(B0abK5h`o93=dHq3@ zAo6LDpYqM|vPp0vb{^PmUY2G!Pz(lxY|AU^IfxNoeag8D_B08^Imc(R3tHw98IYg$ zW$7tBz{C2p)^33NrzI&$7_he6%H^}g-TVLic|p9vT75UlROD&-X~`2a@&FH?9R8{o z!yAiEP)c5Ptx2GRF_d20 z;kkn6;JKwrdGz5 z+6D$z1_nXAy5CSV public override Vector2 boundsMax { get => surfaceCollidersManager?.boundsMax ?? Vector2.zero; } @@ -244,6 +244,7 @@ public override void ProcessInteractable(XRInteractionUpdateOrder.UpdatePhase up colliders.Clear(); ClearKeypointsCache(); startedApproximatingJoints = true; + ui?.Show(); } if (jointPositionApproximation == null) @@ -313,7 +314,18 @@ public override void ProcessInteractable(XRInteractionUpdateOrder.UpdatePhase up } else { - // TODO: display progress + if (ui != null) + { + ui.TextMessage = "Processing hand pose"; + if (percentageDone > 1) + { + ui.InProgress(); + } + else + { + ui.SetProgress(percentageDone); + } + } } } } diff --git a/Runtime/Prefabs/HPUIContinousUI.prefab b/Runtime/Prefabs/HPUIContinousUI.prefab deleted file mode 100644 index 294ee17..0000000 --- a/Runtime/Prefabs/HPUIContinousUI.prefab +++ /dev/null @@ -1,317 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &2961770035072034218 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8629184124075420591} - - component: {fileID: 3135720285395849235} - - component: {fileID: 2420295586894504013} - m_Layer: 5 - m_Name: backplate - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8629184124075420591 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2961770035072034218} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8825315508195386409} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 100, y: 10} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3135720285395849235 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2961770035072034218} - m_CullTransparentMesh: 1 ---- !u!114 &2420295586894504013 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2961770035072034218} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 2bf62cea73f52f7448758b2229ac7a2c, type: 3} - m_Type: 3 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 0 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3373608917536836410 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8770058598125140} - - component: {fileID: 5091855221251318508} - - component: {fileID: 8593948679709192792} - m_Layer: 5 - m_Name: frontplate - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8770058598125140 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3373608917536836410} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8825315508195386409} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 95, y: 8} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5091855221251318508 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3373608917536836410} - m_CullTransparentMesh: 1 ---- !u!114 &8593948679709192792 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3373608917536836410} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.15752938, g: 0.5660378, b: 0.18210375, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 2bf62cea73f52f7448758b2229ac7a2c, type: 3} - m_Type: 3 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 0 - m_FillAmount: 0 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!1 &3522842689121506704 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 947454274434934731} - - component: {fileID: 2442874235928380245} - - component: {fileID: 732220008833224774} - - component: {fileID: 7253316176162991818} - - component: {fileID: 3157601004788341374} - m_Layer: 5 - m_Name: HPUIContinousUI - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &947454274434934731 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3522842689121506704} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8825315508195386409} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!223 &2442874235928380245 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3522842689121506704} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 - m_AdditionalShaderChannelsFlag: 0 - m_UpdateRectTransformForStandalone: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!114 &732220008833224774 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3522842689121506704} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 0 ---- !u!114 &7253316176162991818 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3522842689121506704} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &3157601004788341374 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3522842689121506704} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0f267dc9e93377f4897f95ac98ef2889, type: 3} - m_Name: - m_EditorClassIdentifier: - jointFollowerData: - m_UseConstant: 1 - m_ConstantValue: - handedness: 2 - jointID: 12 - useSecondJointID: 0 - secondJointID: 0 - defaultJointRadius: 0.01 - offsetAngle: 0 - offsetAsRatioToRadius: 1 - longitudinalOffset: 0 - m_Variable: {fileID: 0} - targetTransform: {fileID: 0} ---- !u!1 &8898444606526160354 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8825315508195386409} - m_Layer: 5 - m_Name: Progress - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8825315508195386409 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8898444606526160354} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8629184124075420591} - - {fileID: 8770058598125140} - m_Father: {fileID: 947454274434934731} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 100, y: 100} - m_Pivot: {x: 0.5, y: 0.5} diff --git a/Runtime/UI/HPUIContinuousInteractableUI.cs b/Runtime/UI/HPUIContinuousInteractableUI.cs index b65ec07..cb4aa0c 100644 --- a/Runtime/UI/HPUIContinuousInteractableUI.cs +++ b/Runtime/UI/HPUIContinuousInteractableUI.cs @@ -2,20 +2,23 @@ using UnityEngine; using UnityEngine.UI; using UnityEngine.XR.Hands; +using TMPro; namespace ubco.ovilab.HPUI.UI { public class HPUIContinuousInteractableUI : MonoBehaviour { - private const string UIPrefab = "Packages/ubc.ok.ovilab.hpui-core/Runtime/Prefabs/HPUIContinousUI.prefab"; [SerializeField] private JointFollower jointFollower; [SerializeField] private Transform UIRoot; [SerializeField] private Image progressBarImage; - [SerializeField] private Image inProgressImage; - [SerializeField] private Text textMessage; + [SerializeField] private Transform inProgressObj; + [SerializeField] private TMP_Text textMessage; private bool usingInProgress = false; + /// + /// Above which hand is the UI expected to show? + /// public Handedness Handedness { get => jointFollower?.JointFollowerDatumProperty.Value.handedness ?? Handedness.Invalid; @@ -27,7 +30,12 @@ public Handedness Handedness } } - public string TextMessage { + /// + /// The text message to display. + /// + public string TextMessage + { + get => textMessage.text; set => textMessage.text = value; } @@ -39,7 +47,7 @@ public void SetProgress(float progress) { usingInProgress = false; progressBarImage.transform.parent.gameObject.SetActive(true); - inProgressImage.transform.parent.gameObject.SetActive(false); + inProgressObj.gameObject.SetActive(false); progressBarImage.fillAmount = progress; } @@ -51,7 +59,7 @@ public void InProgress() { usingInProgress = true; progressBarImage.transform.parent.gameObject.SetActive(false); - inProgressImage.transform.parent.gameObject.SetActive(true); + inProgressObj.gameObject.SetActive(true); } /// @@ -60,18 +68,24 @@ private void Update() if (usingInProgress) { // Full rotation every 3 seconds. - inProgressImage.fillAmount = Time.time / 3; + inProgressObj.Rotate(0, (Time.time % 3) / 3 * 360, 0); } UIRoot.localPosition = transform.position + Vector3.up * 0.1f; UIRoot.LookAt(Camera.main.transform); } + /// + /// Show the UI + /// public void Show() { gameObject.SetActive(true); } + /// + /// Hide the UI + /// public void Hide() { gameObject.SetActive(false); diff --git a/Runtime/ubco.ovilab.HPUI.asmdef b/Runtime/ubco.ovilab.HPUI.asmdef index 959fd38..8684516 100644 --- a/Runtime/ubco.ovilab.HPUI.asmdef +++ b/Runtime/ubco.ovilab.HPUI.asmdef @@ -4,7 +4,8 @@ "references": [ "Unity.XR.Hands", "Unity.XR.CoreUtils", - "Unity.XR.Interaction.Toolkit" + "Unity.XR.Interaction.Toolkit", + "Unity.TextMeshPro" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/package.json b/package.json index d7b4144..a74fa5e 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "unity": "2021.3", "dependencies": { "com.unity.xr.hands": "1.4.0-pre.1", - "com.unity.xr.interaction.toolkit": "3.0.0-pre.1" + "com.unity.xr.interaction.toolkit": "3.0.0-pre.1", + "com.unity.textmeshpro": "3.0.6" }, "author": { "name": "Shariff Faleel",