From 07f57f7832d1aa9da6974d8a3752fd553fd5bec2 Mon Sep 17 00:00:00 2001 From: Santiago Lo Coco Date: Mon, 4 Nov 2024 21:02:12 +0100 Subject: [PATCH] Add reload/remove options for the services --- Assets/Scenes/WebView.unity | 906 +++++++++++++++++++++++- Assets/Scripts/EndpointLoader.cs | 6 + Assets/Scripts/ServiceDiscovery.cs | 1 - Assets/Scripts/ServicesListPopulator.cs | 32 + 4 files changed, 943 insertions(+), 2 deletions(-) diff --git a/Assets/Scenes/WebView.unity b/Assets/Scenes/WebView.unity index 80abd8c..ba11206 100644 --- a/Assets/Scenes/WebView.unity +++ b/Assets/Scenes/WebView.unity @@ -2039,6 +2039,538 @@ Transform: m_Father: {fileID: 1604591570} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &317359812 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 317359813} + - component: {fileID: 317359820} + - component: {fileID: 317359819} + - component: {fileID: 317359818} + - component: {fileID: 317359817} + - component: {fileID: 317359816} + - component: {fileID: 317359815} + - component: {fileID: 317359814} + m_Layer: 0 + m_Name: Reload + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &317359813 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317359812} + m_LocalRotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.0562, y: -0.0348, z: 0.012793481} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 644474448} + - {fileID: 675979277} + - {fileID: 1759305269} + m_Father: {fileID: 3596669758744615198} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!114 &317359814 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317359812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2cf098d972aeb8b4daa70b00381af006, type: 3} + m_Name: + m_EditorClassIdentifier: + mainLabelText: {fileID: 0} + interactable: {fileID: 317359817} + seeItSayItLabel: {fileID: 0} + seeItSayItLabelText: {fileID: 0} + iconStyle: 0 + iconCharLabel: {fileID: 0} + iconCharFont: {fileID: 0} + iconChar: 0 + iconSpriteRenderer: {fileID: 0} + iconSprite: {fileID: 21300000, guid: 20f25674b9512834f88938d45ed495d7, type: 3} + iconQuadRenderer: {fileID: 1442905281} + iconQuadTextureNameID: _MainTex + iconQuadTexture: {fileID: 2800000, guid: 559e1da0e65611c4f93ec931e1e6a8a2, type: 3} + defaultButtonQuadMaterial: {fileID: 0} + iconSet: {fileID: 11400000, guid: 8b386ef895f7c924f8c4b03d1d3ed683, type: 2} + defaultIconSet: {fileID: 0} +--- !u!114 &317359815 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317359812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 98c748f3768ab714a8449b60fb9edc5c, type: 3} + m_Name: + m_EditorClassIdentifier: + eventsToReceive: 0 + debounceThreshold: 0.01 + localForward: {x: 0, y: 0, z: -1} + localUp: {x: 0, y: 1, z: 0} + localCenter: {x: 0, y: 0, z: -0.008} + bounds: {x: 0.032, y: 0.032} + touchableCollider: {fileID: 317359820} +--- !u!82 &317359816 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317359812} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &317359817 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317359812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1410eac1ae94b4d4492a09cc368e152c, type: 3} + m_Name: + m_EditorClassIdentifier: + states: {fileID: 11400000, guid: e51893c8eb7938e4ba43985af43c0f72, type: 2} + InputActionId: 0 + isGlobal: 0 + Dimensions: 1 + dimensionIndex: 0 + startDimensionIndex: 0 + CanSelect: 0 + CanDeselect: 0 + voiceCommand: Select + voiceRequiresFocus: 1 + profiles: + - Target: {fileID: 2038320792} + Themes: + - {fileID: 11400000, guid: 8f8cfb3041153fa45bccb6d664a563ec, type: 2} + - Target: {fileID: 1442905279} + Themes: + - {fileID: 11400000, guid: 087b16002c2b0b445baa3ed3beae44a9, type: 2} + OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 491721038} + m_TargetAssemblyTypeName: EndpointLoader, Assembly-CSharp + m_MethodName: ClearServices + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 491721038} + m_TargetAssemblyTypeName: EndpointLoader, Assembly-CSharp + m_MethodName: ReloadEndpoints + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + Events: + - Event: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 317359819} + m_TargetAssemblyTypeName: + m_MethodName: AnimateInHighlightPlate + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + ClassName: InteractableOnFocusReceiver + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableOnFocusReceiver, + Microsoft.MixedReality.Toolkit.SDK + Settings: + - Type: 18 + Label: On Focus Off + Name: OnFocusOff + Tooltip: Focus has left the object + IntValue: 0 + StringValue: + FloatValue: 0 + BoolValue: 0 + GameObjectValue: {fileID: 0} + ScriptableObjectValue: {fileID: 0} + ObjectValue: {fileID: 0} + MaterialValue: {fileID: 0} + TextureValue: {fileID: 0} + ColorValue: {r: 0, g: 0, b: 0, a: 0} + Vector2Value: {x: 0, y: 0} + Vector3Value: {x: 0, y: 0, z: 0} + Vector4Value: {x: 0, y: 0, z: 0, w: 0} + CurveValue: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 0 + m_PostInfinity: 0 + m_RotationOrder: 0 + AudioClipValue: {fileID: 0} + QuaternionValue: {x: 0, y: 0, z: 0, w: 0} + EventValue: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 317359819} + m_TargetAssemblyTypeName: + m_MethodName: AnimateOutHighlightPlate + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + Options: [] + - Event: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 317359816} + m_TargetAssemblyTypeName: UnityEngine.AudioSource, UnityEngine + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: 291bf9326e517b0489c2ee53d0a6a63f, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + ClassName: InteractableOnPressReceiver + AssemblyQualifiedName: Microsoft.MixedReality.Toolkit.UI.InteractableOnPressReceiver, + Microsoft.MixedReality.Toolkit.SDK + Settings: + - Type: 18 + Label: On Release + Name: OnRelease + Tooltip: The button is released + IntValue: 0 + StringValue: + FloatValue: 0 + BoolValue: 0 + GameObjectValue: {fileID: 0} + ScriptableObjectValue: {fileID: 0} + ObjectValue: {fileID: 0} + MaterialValue: {fileID: 0} + TextureValue: {fileID: 0} + ColorValue: {r: 0, g: 0, b: 0, a: 0} + Vector2Value: {x: 0, y: 0} + Vector3Value: {x: 0, y: 0, z: 0} + Vector4Value: {x: 0, y: 0, z: 0, w: 0} + CurveValue: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 0 + m_PostInfinity: 0 + m_RotationOrder: 0 + AudioClipValue: {fileID: 0} + QuaternionValue: {x: 0, y: 0, z: 0, w: 0} + EventValue: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 317359816} + m_TargetAssemblyTypeName: UnityEngine.AudioSource, UnityEngine + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: 40ae713ddf420714bbc1a3b5c3f2eac1, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + Options: [] + - Type: 5 + Label: Interaction Filter + Name: InteractionFilter + Tooltip: Specify whether press event is for near or far interaction + IntValue: 2 + StringValue: + FloatValue: 0 + BoolValue: 0 + GameObjectValue: {fileID: 0} + ScriptableObjectValue: {fileID: 0} + ObjectValue: {fileID: 0} + MaterialValue: {fileID: 0} + TextureValue: {fileID: 0} + ColorValue: {r: 0, g: 0, b: 0, a: 0} + Vector2Value: {x: 0, y: 0} + Vector3Value: {x: 0, y: 0, z: 0} + Vector4Value: {x: 0, y: 0, z: 0, w: 0} + CurveValue: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 0 + m_PostInfinity: 0 + m_RotationOrder: 0 + AudioClipValue: {fileID: 0} + QuaternionValue: {x: 0, y: 0, z: 0, w: 0} + EventValue: + m_PersistentCalls: + m_Calls: [] + Options: + - Near and Far + - Near Only + - Far Only + resetOnDestroy: 0 + enabledOnStart: 1 +--- !u!114 &317359818 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317359812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 881d1ff8f009f5148b9f192e6ba31223, type: 3} + m_Name: + m_EditorClassIdentifier: + routingTarget: {fileID: 317359817} + InteractableOnClick: 1 +--- !u!114 &317359819 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317359812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f98e7663599230e419addf153615c144, type: 3} + m_Name: + m_EditorClassIdentifier: + movingButtonVisuals: {fileID: 644474447} + distanceSpaceMode: 1 + startPushDistance: -0.008 + maxPushDistance: 0.006 + pressDistance: 0.0005 + releaseDistanceDelta: 0.002 + returnSpeed: 25 + releaseOnTouchEnd: 1 + enforceFrontPush: 1 + TouchBegin: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 317359818} + m_TargetAssemblyTypeName: + m_MethodName: OnHandPressTouched + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + TouchEnd: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 317359818} + m_TargetAssemblyTypeName: + m_MethodName: OnHandPressUntouched + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + ButtonPressed: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 317359818} + m_TargetAssemblyTypeName: + m_MethodName: OnHandPressTriggered + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 317359816} + m_TargetAssemblyTypeName: UnityEngine.AudioSource, UnityEngine + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: 291bf9326e517b0489c2ee53d0a6a63f, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + ButtonReleased: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 317359818} + m_TargetAssemblyTypeName: + m_MethodName: OnHandPressCompleted + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 317359816} + m_TargetAssemblyTypeName: UnityEngine.AudioSource, UnityEngine + m_MethodName: PlayOneShot + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 8300000, guid: 40ae713ddf420714bbc1a3b5c3f2eac1, type: 3} + m_ObjectArgumentAssemblyTypeName: UnityEngine.AudioClip, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + movingButtonIconText: {fileID: 1759305268} + compressableButtonVisuals: {fileID: 675979276} + minCompressPercentage: 0.25 + highlightPlate: {fileID: 1810623368} + highlightPlateAnimationTime: 0.25 +--- !u!65 &317359820 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 317359812} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.032, y: 0.032, z: 0.016} + m_Center: {x: 0, y: 0, z: 0} --- !u!114 &323128547 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2571,6 +3103,37 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 620040952} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &644474447 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 644474448} + m_Layer: 0 + m_Name: ButtonContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &644474448 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 644474447} + 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: 317359813} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &661354342 GameObject: m_ObjectHideFlags: 0 @@ -3200,6 +3763,38 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 667489765} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &675979276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 675979277} + m_Layer: 0 + m_Name: CompressableButtonVisuals + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &675979277 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 675979276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.008} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2038320793} + m_Father: {fileID: 317359813} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &704152375 GameObject: m_ObjectHideFlags: 0 @@ -4862,7 +5457,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: Follow + m_text: Service m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 6a84f857bec7e7345843ae29404c57ce, type: 2} m_sharedMaterial: {fileID: 21202819797275496, guid: 6a84f857bec7e7345843ae29404c57ce, type: 2} @@ -6115,6 +6710,89 @@ Transform: m_Father: {fileID: 1604591570} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1442905279 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1442905280} + - component: {fileID: 1442905282} + - component: {fileID: 1442905281} + m_Layer: 5 + m_Name: UIButtonSquareIcon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1442905280 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1442905279} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.32, y: 0.32, z: 0.32} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1759305269} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1442905281 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1442905279} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fa419ab56051229449e3b813df8f295f, type: 2} + 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: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1442905282 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1442905279} + m_Mesh: {fileID: 4300010, guid: b566bbce04d66f4428421e81a3af0299, type: 3} --- !u!1 &1517812034 GameObject: m_ObjectHideFlags: 0 @@ -6702,6 +7380,38 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 +--- !u!1 &1759305268 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1759305269} + m_Layer: 0 + m_Name: IconAndText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1759305269 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1759305268} + 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: 1442905280} + m_Father: {fileID: 317359813} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1796630401 MonoBehaviour: m_ObjectHideFlags: 0 @@ -6724,6 +7434,102 @@ MonoBehaviour: handleSlatePrefab: {fileID: 1134031327877807717, guid: c45e552a6d92491468c421c35c5dd63d, type: 3} showScaleHandles: 1 scaleBehavior: 0 +--- !u!1 &1810623365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1810623366} + - component: {fileID: 1810623369} + - component: {fileID: 1810623368} + - component: {fileID: 1810623367} + m_Layer: 0 + m_Name: HighlightPlate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1810623366 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1810623365} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2038320793} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1810623367 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1810623365} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 36065390e01a3cd40b87e4bf4acd02f9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!23 &1810623368 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1810623365} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 329cdefad4cf0f14e9b6767d0af094b0, type: 2} + 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: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1810623369 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1810623365} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!114 &1846695264 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7703,6 +8509,103 @@ Material: - _RimColor: {r: 1, g: 1, b: 1, a: 0.497} - _RoundCornersRadius: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} m_BuildTextureStacks: [] +--- !u!1 &2038320792 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2038320793} + - component: {fileID: 2038320796} + - component: {fileID: 2038320795} + - component: {fileID: 2038320794} + m_Layer: 0 + m_Name: FrontPlate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2038320793 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038320792} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.008} + m_LocalScale: {x: 0.032, y: 0.032, z: 0.016} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1810623366} + m_Father: {fileID: 675979277} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2038320794 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038320792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 36065390e01a3cd40b87e4bf4acd02f9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!23 &2038320795 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038320792} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 38a587e9218b3284485088c9925af61f, type: 2} + 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: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2038320796 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2038320792} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!21 &2059116078 Material: serializedVersion: 8 @@ -11008,6 +11911,7 @@ Transform: - {fileID: 8368270059545913962} - {fileID: 6900887917895969178} - {fileID: 5521194634169070310} + - {fileID: 317359813} m_Father: {fileID: 4283623065100561231} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scripts/EndpointLoader.cs b/Assets/Scripts/EndpointLoader.cs index 5f354db..698b5b4 100644 --- a/Assets/Scripts/EndpointLoader.cs +++ b/Assets/Scripts/EndpointLoader.cs @@ -136,6 +136,12 @@ public class EndpointLoader : MonoBehaviour }); } + public void ClearServices() + { + availableServices.Clear(); + servicesListPopulator.RemoveAllItems(); + } + public void ReloadEndpoints() { triedMulticast = false; diff --git a/Assets/Scripts/ServiceDiscovery.cs b/Assets/Scripts/ServiceDiscovery.cs index c7141cd..b71b336 100644 --- a/Assets/Scripts/ServiceDiscovery.cs +++ b/Assets/Scripts/ServiceDiscovery.cs @@ -230,7 +230,6 @@ public class ServiceDiscovery : MonoBehaviour if (ttl == 0) { Debug.LogWarning($"Zero TTL for {name}"); - // TODO: Remove service from list return offset + dataLength; } diff --git a/Assets/Scripts/ServicesListPopulator.cs b/Assets/Scripts/ServicesListPopulator.cs index 1b9d52b..498b3b4 100644 --- a/Assets/Scripts/ServicesListPopulator.cs +++ b/Assets/Scripts/ServicesListPopulator.cs @@ -38,6 +38,38 @@ public class ServicesListPopulator : MonoBehaviour scrollView.UpdateContent(); } + public void RemoveAllItems() + { + foreach (Transform child in gridObjectCollection.transform) + { + Destroy(child.gameObject); + } + + Debug.Log("Removed all services from table"); + gridObjectCollection.UpdateCollection(); + scrollView.UpdateContent(); + } + + public void RemoveItemByService(MdnsService service) + { + string fullAddress = service.Host + ":" + service.Port + service.Path; + string ipAddress = service.IpAddress; + + foreach (Transform child in gridObjectCollection.transform) + { + TextMeshPro[] textMeshes = child.GetComponentsInChildren(); + if (textMeshes.Length >= 2 && textMeshes[0].text == fullAddress && textMeshes[1].text == ipAddress) + { + Debug.Log($"Removing service from table: {service}"); + Destroy(child.gameObject); + break; + } + } + + gridObjectCollection.UpdateCollection(); + scrollView.UpdateContent(); + } + public void ToggleVisibility() { isVisible = !isVisible;