From 004d495f7d05736f98bba455c5784b1688062059 Mon Sep 17 00:00:00 2001 From: joshua-z-zheng Date: Thu, 6 Mar 2025 17:55:27 -0500 Subject: [PATCH 1/4] fixed looking searchpoint bug --- .../SearchPoints/LookingSearchPoint.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/LookingSearchPoint.cs b/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/LookingSearchPoint.cs index bb4b1e76..b1983995 100644 --- a/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/LookingSearchPoint.cs +++ b/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/LookingSearchPoint.cs @@ -27,11 +27,13 @@ public List Search() if (Physics.Raycast(ray, out hit, _maxDistance)) // Check if camera sees something { GameObject obj = hit.collider.gameObject; - GameObject parentObj = obj.transform.parent.gameObject; //colliders are under parent gameObject that contains tag - if (parentObj != null){ - UniversalTextTag tag = parentObj.GetComponent(); - if (tag != null){ - seen.Add(tag); + if (obj != null && obj.transform.parent != null){ + GameObject parentObj = obj.transform.parent.gameObject; //colliders are under parent gameObject that contains tag + if (parentObj != null){ + UniversalTextTag tag = parentObj.GetComponent(); + if (tag != null){ + seen.Add(tag); + } } } } From 7bbe22ee94fd079588878b009fc67dcd8a454f1c Mon Sep 17 00:00:00 2001 From: joshua-z-zheng Date: Thu, 13 Mar 2025 18:43:06 -0400 Subject: [PATCH 2/4] added scan visuals and functionality for general direction and distance --- Assets/Prefabs/Scanner.prefab | 109 ++++++++++++++++ Assets/Prefabs/Scanner.prefab.meta | 7 + Assets/Scenes/DemoScene.unity | 123 +++++++++++++++++- Assets/Scripts/Core/Scanner.cs | 101 ++++++++++++++ Assets/Scripts/Core/Scanner.cs.meta | 11 ++ .../ScanningSearchPointConfig.cs | 19 +++ .../ScanningSearchPointConfig.cs.meta | 11 ++ .../SearchPoints/ScanningSearchPoint.cs | 59 +++++++++ .../SearchPoints/ScanningSearchPoint.cs.meta | 11 ++ 9 files changed, 449 insertions(+), 2 deletions(-) create mode 100644 Assets/Prefabs/Scanner.prefab create mode 100644 Assets/Prefabs/Scanner.prefab.meta create mode 100644 Assets/Scripts/Core/Scanner.cs create mode 100644 Assets/Scripts/Core/Scanner.cs.meta create mode 100644 Assets/Scripts/Core/UniversalTextScanner/SearchPointConfigs/ScanningSearchPointConfig.cs create mode 100644 Assets/Scripts/Core/UniversalTextScanner/SearchPointConfigs/ScanningSearchPointConfig.cs.meta create mode 100644 Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs create mode 100644 Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs.meta diff --git a/Assets/Prefabs/Scanner.prefab b/Assets/Prefabs/Scanner.prefab new file mode 100644 index 00000000..09a83bed --- /dev/null +++ b/Assets/Prefabs/Scanner.prefab @@ -0,0 +1,109 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2234413985285122603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5711257108585402242} + - component: {fileID: 2628358506930142324} + - component: {fileID: 4025168896005785838} + - component: {fileID: 3855791558258020070} + m_Layer: 0 + m_Name: Scanner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5711257108585402242 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2234413985285122603} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -9.139154, y: 1.9580637, z: 13.577715} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2628358506930142324 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2234413985285122603} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4025168896005785838 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2234413985285122603} + 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: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, 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: 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!136 &3855791558258020070 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2234413985285122603} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} diff --git a/Assets/Prefabs/Scanner.prefab.meta b/Assets/Prefabs/Scanner.prefab.meta new file mode 100644 index 00000000..0750917c --- /dev/null +++ b/Assets/Prefabs/Scanner.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 843300851837c4d6a9ddad3f84c19488 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/DemoScene.unity b/Assets/Scenes/DemoScene.unity index 3d95a4cf..a4ebeb13 100644 --- a/Assets/Scenes/DemoScene.unity +++ b/Assets/Scenes/DemoScene.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.0817826, g: 0.098988295, b: 0.1317786, a: 1} + m_IndirectSpecularColor: {r: 0.081782475, g: 0.09898821, b: 0.1317783, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -469,6 +469,30 @@ MonoBehaviour: _rigidbody: {fileID: 304683532} _kinematicWhileSelected: 1 _throwWhenUnselected: 1 +--- !u!1 &398801786 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2234413985285122603, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + m_PrefabInstance: {fileID: 7595481677279110993} + m_PrefabAsset: {fileID: 0} +--- !u!4 &398801787 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + m_PrefabInstance: {fileID: 7595481677279110993} + m_PrefabAsset: {fileID: 0} +--- !u!114 &398801791 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398801786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3ba668ac8ab2c4786a9410cac1404204, type: 3} + m_Name: + m_EditorClassIdentifier: + scanRadius: 5 + scanAngle: 30 --- !u!1 &404856598 stripped GameObject: m_CorrespondingSourceObject: {fileID: 1202981191471370897, guid: 458271fb06e38ef4abfe60d080c61a94, type: 3} @@ -577,7 +601,10 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] - m_AddedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 5456486938294406889, guid: 15b2f87506f6346efa4d7a6c469390c9, type: 3} + insertIndex: -1 + addedObject: {fileID: 398801787} m_AddedComponents: - targetCorrespondingSourceObject: {fileID: 7305686084408359732, guid: 15b2f87506f6346efa4d7a6c469390c9, type: 3} insertIndex: -1 @@ -1312,9 +1339,20 @@ MonoBehaviour: - rid: 7219879472968237058 - rid: 7219879472968237059 - rid: 7219879472968237060 + - rid: 150161560214437888 + - rid: 150161715411288064 references: version: 2 RefIds: + - rid: 150161560214437888 + type: {class: LookingSearchPointConfig, ns: UniversalText.UI, asm: Assembly-CSharp} + data: + xrCamera: {fileID: 1698400506} + maxViewDistance: 10 + - rid: 150161715411288064 + type: {class: ScanningSearchPointConfig, ns: UniversalText.UI, asm: Assembly-CSharp} + data: + scanner: {fileID: 398801786} - rid: 7219879472968237056 type: {class: GrabbingSearchPointConfig, ns: UniversalText.UI, asm: Assembly-CSharp} data: @@ -1883,6 +1921,11 @@ Transform: m_Children: [] m_Father: {fileID: 421595541} m_LocalEulerAnglesHint: {x: 36.773, y: -326.54102, z: -1.001} +--- !u!4 &1451708246 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5456486938294406889, guid: 15b2f87506f6346efa4d7a6c469390c9, type: 3} + m_PrefabInstance: {fileID: 405500946} + m_PrefabAsset: {fileID: 0} --- !u!1001 &1463193379 PrefabInstance: m_ObjectHideFlags: 0 @@ -2627,6 +2670,82 @@ PrefabInstance: insertIndex: -1 addedObject: {fileID: 543450653143515745} m_SourcePrefab: {fileID: 100100000, guid: 900432286b70dd3448b0884c911e1f6d, type: 3} +--- !u!1001 &7595481677279110993 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1451708246} + m_Modifications: + - target: {fileID: 2234413985285122603, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_Name + value: Scanner + objectReference: {fileID: 0} + - target: {fileID: 2234413985285122603, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalScale.x + value: 0.05 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalScale.y + value: 0.05 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalScale.z + value: 0.05 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalPosition.x + value: -0.1 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalPosition.y + value: -0.06 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalRotation.w + value: 0.4719294 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalRotation.x + value: 0.54289275 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalRotation.y + value: 0.45573688 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalRotation.z + value: -0.52426535 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 98 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 88 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 2234413985285122603, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} + insertIndex: -1 + addedObject: {fileID: 398801791} + m_SourcePrefab: {fileID: 100100000, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Core/Scanner.cs b/Assets/Scripts/Core/Scanner.cs new file mode 100644 index 00000000..0b4b0f9c --- /dev/null +++ b/Assets/Scripts/Core/Scanner.cs @@ -0,0 +1,101 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UniversalText.Core; + +public class Scanner : MonoBehaviour +{ + [SerializeField] private float scanRadius = 5f; + [SerializeField] private float scanAngle = 20f; + + public float ScanRadius => scanRadius; + public float ScanAngle => scanAngle; + + private GameObject scannerVisual; + private MeshFilter meshFilter; + private MeshRenderer meshRenderer; + private Mesh scannerMesh; + private MeshCollider meshCollider; + + private void Awake() + { + InitializeScannerMesh(); + } + + private void InitializeScannerMesh() + { + scannerVisual = new GameObject("ScannerVisual"); + scannerVisual.transform.SetParent(transform, false); + + meshFilter = scannerVisual.AddComponent(); + meshRenderer = scannerVisual.AddComponent(); + + Material scannerMaterial = new Material(Shader.Find("Standard")); + scannerMaterial.color = new Color(0.5f, 0.8f, 1f, 0.15f); + + scannerMaterial.SetFloat("_Mode", 3); + scannerMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); + scannerMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); + scannerMaterial.SetInt("_ZWrite", 0); + scannerMaterial.DisableKeyword("_ALPHATEST_ON"); + scannerMaterial.EnableKeyword("_ALPHABLEND_ON"); + scannerMaterial.DisableKeyword("_ALPHAPREMULTIPLY_ON"); + scannerMaterial.renderQueue = 3000; + + meshRenderer.material = scannerMaterial; + + meshCollider = scannerVisual.AddComponent(); + meshCollider.convex = false; + meshCollider.isTrigger = true; + + CreateWedgeMesh(); + } + + private void CreateWedgeMesh() + { + scannerMesh = new Mesh(); + + int segments = 20; + Vector3[] vertices = new Vector3[segments + 2]; + int[] triangles = new int[segments * 6]; + + vertices[0] = Vector3.zero; + + float halfAngle = scanAngle * 0.5f; + for (int i = 0; i <= segments; i++) + { + float angle = -halfAngle + ((float)i / segments) * scanAngle; + float angleRad = angle * Mathf.Deg2Rad; + float x = Mathf.Sin(angleRad) * scanRadius; + float z = Mathf.Cos(angleRad) * scanRadius; + vertices[i + 1] = new Vector3(x, 0, z); + } + + for (int i = 0; i < segments; i++) + { + triangles[i * 6] = 0; + triangles[i * 6 + 1] = i + 1; + triangles[i * 6 + 2] = i + 2; + + triangles[i * 6 + 3] = 0; + triangles[i * 6 + 4] = i + 2; + triangles[i * 6 + 5] = i + 1; + } + + scannerMesh.vertices = vertices; + scannerMesh.triangles = triangles; + scannerMesh.RecalculateNormals(); + + meshFilter.mesh = scannerMesh; + + if (meshCollider != null) + { + meshCollider.sharedMesh = scannerMesh; + } + } + + public void ToggleScanner() + { + gameObject.SetActive(!gameObject.activeSelf); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Scanner.cs.meta b/Assets/Scripts/Core/Scanner.cs.meta new file mode 100644 index 00000000..e98d9c8a --- /dev/null +++ b/Assets/Scripts/Core/Scanner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ba668ac8ab2c4786a9410cac1404204 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/UniversalTextScanner/SearchPointConfigs/ScanningSearchPointConfig.cs b/Assets/Scripts/Core/UniversalTextScanner/SearchPointConfigs/ScanningSearchPointConfig.cs new file mode 100644 index 00000000..2a8ec901 --- /dev/null +++ b/Assets/Scripts/Core/UniversalTextScanner/SearchPointConfigs/ScanningSearchPointConfig.cs @@ -0,0 +1,19 @@ +using Oculus.Interaction.HandGrab; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UniversalText.Core; +using Oculus.Interaction.Input; + +namespace UniversalText.UI +{ + public class ScanningSearchPointConfig : SearchPointConfig + { + public GameObject scanner; + public override ISearchPoint CreateSearchPoint() + { + return new ScanningSearchPoint(scanner); + } + } +} + diff --git a/Assets/Scripts/Core/UniversalTextScanner/SearchPointConfigs/ScanningSearchPointConfig.cs.meta b/Assets/Scripts/Core/UniversalTextScanner/SearchPointConfigs/ScanningSearchPointConfig.cs.meta new file mode 100644 index 00000000..c76c2367 --- /dev/null +++ b/Assets/Scripts/Core/UniversalTextScanner/SearchPointConfigs/ScanningSearchPointConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e54e83b2b32e5469d9b1399166604586 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs b/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs new file mode 100644 index 00000000..0b3d3686 --- /dev/null +++ b/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs @@ -0,0 +1,59 @@ +using Oculus.Interaction.HandGrab; +using System.Collections; +using System.Collections.Generic; +using Unity.VisualScripting; +using UnityEngine; + +namespace UniversalText.Core +{ + public class ScanningSearchPoint : ISearchPoint + { + public string Description { get => "The user is scanning"; } + + private GameObject _scanner; + private GameObject _scannerVisual; + private float _scannerRadius; + + public ScanningSearchPoint(GameObject scanner) + { + _scanner = scanner; + _scannerVisual = scanner.transform.GetChild(0).gameObject; + _scannerRadius = scanner.GetComponent().ScanRadius * scanner.transform.localScale.x; + } + + public List Search() + { + List scanned = new List(); + + Transform scannerTransform = _scanner.transform; + MeshCollider scannerCollider = _scannerVisual.GetComponent(); + + Collider[] hitColliders = Physics.OverlapSphere(scannerTransform.position, _scannerRadius); + + foreach (Collider collider in hitColliders) + { + if (collider.gameObject == _scannerVisual || collider.gameObject.transform.root == _scanner.transform.parent.transform.root) continue; + + if (Physics.ComputePenetration( + collider, + collider.transform.position, + collider.transform.rotation, + scannerCollider, + scannerCollider.transform.position, + scannerCollider.transform.rotation, + out _, + out _)) + { + UniversalTextTag tag = collider.GetComponentInParent(); + if (tag != null) + { + scanned.Add(tag); + } + } + } + + return scanned; + } + } +} + diff --git a/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs.meta b/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs.meta new file mode 100644 index 00000000..77a0eef5 --- /dev/null +++ b/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d2806180a26a24f89841482319339c4f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From e14e8707921bbf96fc275860cfcbe57930dd090d Mon Sep 17 00:00:00 2001 From: joshua-z-zheng Date: Thu, 27 Mar 2025 18:55:09 -0400 Subject: [PATCH 3/4] added and configured alternate scanner prefab --- Assets/Prefabs/Scanner.prefab | 35 ++-- Assets/Prefabs/ScannerAlt.prefab | 100 +++++++++ Assets/Prefabs/ScannerAlt.prefab.meta | 7 + Assets/Scenes/DemoScene.unity | 191 ++++++++---------- Assets/Scripts/Core/ScannerAlt.cs | 63 ++++++ Assets/Scripts/Core/ScannerAlt.cs.meta | 11 + .../SearchPoints/ScanningSearchPoint.cs | 22 +- 7 files changed, 304 insertions(+), 125 deletions(-) create mode 100644 Assets/Prefabs/ScannerAlt.prefab create mode 100644 Assets/Prefabs/ScannerAlt.prefab.meta create mode 100644 Assets/Scripts/Core/ScannerAlt.cs create mode 100644 Assets/Scripts/Core/ScannerAlt.cs.meta diff --git a/Assets/Prefabs/Scanner.prefab b/Assets/Prefabs/Scanner.prefab index 09a83bed..449c9fe7 100644 --- a/Assets/Prefabs/Scanner.prefab +++ b/Assets/Prefabs/Scanner.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 5711257108585402242} - component: {fileID: 2628358506930142324} - component: {fileID: 4025168896005785838} - - component: {fileID: 3855791558258020070} + - component: {fileID: 3252051209285762521} m_Layer: 0 m_Name: Scanner m_TagString: Untagged @@ -27,13 +27,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2234413985285122603} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -9.139154, y: 1.9580637, z: 13.577715} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalRotation: {x: 0.5868241, y: 0.4131759, z: -0.49240384, w: 0.49240392} + m_LocalPosition: {x: -0.1, y: -0.05, z: 0} + m_LocalScale: {x: 0.04999999, y: 0.05, z: 0.04999999} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 100, y: 80, z: 0} --- !u!33 &2628358506930142324 MeshFilter: m_ObjectHideFlags: 0 @@ -84,26 +84,17 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!136 &3855791558258020070 -CapsuleCollider: +--- !u!114 &3252051209285762521 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2234413985285122603} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3ba668ac8ab2c4786a9410cac1404204, type: 3} + m_Name: + m_EditorClassIdentifier: + scanRadius: 5 + scanAngle: 30 diff --git a/Assets/Prefabs/ScannerAlt.prefab b/Assets/Prefabs/ScannerAlt.prefab new file mode 100644 index 00000000..115ab559 --- /dev/null +++ b/Assets/Prefabs/ScannerAlt.prefab @@ -0,0 +1,100 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2234413985285122603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5711257108585402242} + - component: {fileID: 2628358506930142324} + - component: {fileID: 4025168896005785838} + - component: {fileID: -3042310315274692433} + m_Layer: 0 + m_Name: ScannerAlt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5711257108585402242 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2234413985285122603} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: -0.1, y: -0.05, z: 0} + m_LocalScale: {x: 0.1, y: 0.05, z: 0.05} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!33 &2628358506930142324 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2234413985285122603} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4025168896005785838 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2234413985285122603} + 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: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, 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: 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!114 &-3042310315274692433 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2234413985285122603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9ebf24131ce804a4cb91c0445d2bc4a7, type: 3} + m_Name: + m_EditorClassIdentifier: + scanRadius: 5 + scanEdge: 0.1 diff --git a/Assets/Prefabs/ScannerAlt.prefab.meta b/Assets/Prefabs/ScannerAlt.prefab.meta new file mode 100644 index 00000000..97b56def --- /dev/null +++ b/Assets/Prefabs/ScannerAlt.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 86010cfa120a747e794ff43d10c145bc +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/DemoScene.unity b/Assets/Scenes/DemoScene.unity index a4ebeb13..8b2b3804 100644 --- a/Assets/Scenes/DemoScene.unity +++ b/Assets/Scenes/DemoScene.unity @@ -469,30 +469,6 @@ MonoBehaviour: _rigidbody: {fileID: 304683532} _kinematicWhileSelected: 1 _throwWhenUnselected: 1 ---- !u!1 &398801786 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 2234413985285122603, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - m_PrefabInstance: {fileID: 7595481677279110993} - m_PrefabAsset: {fileID: 0} ---- !u!4 &398801787 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - m_PrefabInstance: {fileID: 7595481677279110993} - m_PrefabAsset: {fileID: 0} ---- !u!114 &398801791 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 398801786} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3ba668ac8ab2c4786a9410cac1404204, type: 3} - m_Name: - m_EditorClassIdentifier: - scanRadius: 5 - scanAngle: 30 --- !u!1 &404856598 stripped GameObject: m_CorrespondingSourceObject: {fileID: 1202981191471370897, guid: 458271fb06e38ef4abfe60d080c61a94, type: 3} @@ -604,7 +580,7 @@ PrefabInstance: m_AddedGameObjects: - targetCorrespondingSourceObject: {fileID: 5456486938294406889, guid: 15b2f87506f6346efa4d7a6c469390c9, type: 3} insertIndex: -1 - addedObject: {fileID: 398801787} + addedObject: {fileID: 500776042} m_AddedComponents: - targetCorrespondingSourceObject: {fileID: 7305686084408359732, guid: 15b2f87506f6346efa4d7a6c469390c9, type: 3} insertIndex: -1 @@ -678,6 +654,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9067480af55f5874d8f613b16812f968, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &500776041 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2234413985285122603, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + m_PrefabInstance: {fileID: 1313480967} + m_PrefabAsset: {fileID: 0} +--- !u!4 &500776042 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + m_PrefabInstance: {fileID: 1313480967} + m_PrefabAsset: {fileID: 0} --- !u!1 &542048662 stripped GameObject: m_CorrespondingSourceObject: {fileID: 5500661605437975082, guid: 2db51a3ce7d7fe34a934d68f0c488f54, type: 3} @@ -1352,7 +1338,7 @@ MonoBehaviour: - rid: 150161715411288064 type: {class: ScanningSearchPointConfig, ns: UniversalText.UI, asm: Assembly-CSharp} data: - scanner: {fileID: 398801786} + scanner: {fileID: 500776041} - rid: 7219879472968237056 type: {class: GrabbingSearchPointConfig, ns: UniversalText.UI, asm: Assembly-CSharp} data: @@ -1764,6 +1750,83 @@ PrefabInstance: insertIndex: -1 addedObject: {fileID: 1176359129} m_SourcePrefab: {fileID: 100100000, guid: a5ac041b79f79364ca8481b503332787, type: 3} +--- !u!1001 &1313480967 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1451708246} + m_Modifications: + - target: {fileID: -3042310315274692433, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: scanEdge + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: -3042310315274692433, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: scanRadius + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 2234413985285122603, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_Name + value: ScannerAlt + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalScale.x + value: 0.10000001 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalScale.y + value: 0.050000012 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalScale.z + value: 0.050000016 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalPosition.x + value: -0.10000011 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalPosition.y + value: -0.050000012 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalRotation.w + value: 0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalRotation.x + value: 0.70710677 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalRotation.y + value: -0.000000029802315 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalRotation.z + value: 0.000000029802315 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} --- !u!1001 &1390273401 PrefabInstance: m_ObjectHideFlags: 0 @@ -2670,82 +2733,6 @@ PrefabInstance: insertIndex: -1 addedObject: {fileID: 543450653143515745} m_SourcePrefab: {fileID: 100100000, guid: 900432286b70dd3448b0884c911e1f6d, type: 3} ---- !u!1001 &7595481677279110993 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 1451708246} - m_Modifications: - - target: {fileID: 2234413985285122603, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_Name - value: Scanner - objectReference: {fileID: 0} - - target: {fileID: 2234413985285122603, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalScale.x - value: 0.05 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalScale.y - value: 0.05 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalScale.z - value: 0.05 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalPosition.x - value: -0.1 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalPosition.y - value: -0.06 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalRotation.w - value: 0.4719294 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalRotation.x - value: 0.54289275 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalRotation.y - value: 0.45573688 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalRotation.z - value: -0.52426535 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 98 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 88 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: - - targetCorrespondingSourceObject: {fileID: 2234413985285122603, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} - insertIndex: -1 - addedObject: {fileID: 398801791} - m_SourcePrefab: {fileID: 100100000, guid: 843300851837c4d6a9ddad3f84c19488, type: 3} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Core/ScannerAlt.cs b/Assets/Scripts/Core/ScannerAlt.cs new file mode 100644 index 00000000..a253a60b --- /dev/null +++ b/Assets/Scripts/Core/ScannerAlt.cs @@ -0,0 +1,63 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UniversalText.Core; + +public class ScannerAlt : MonoBehaviour +{ + [SerializeField] private float scanRadius = 10f; + [SerializeField] private float scanEdge = 0.2f; + + public float ScanRadius => scanRadius; + public float ScanEdge => scanEdge; + + private GameObject scannerVisual; + private MeshRenderer meshRenderer; + private MeshCollider meshCollider; + + private void Awake() + { + InitializeScannerMesh(); + } + + private void InitializeScannerMesh() + { + scannerVisual = GameObject.CreatePrimitive(PrimitiveType.Cube); + scannerVisual.transform.SetParent(transform, false); + + scannerVisual.transform.localPosition = new Vector3(0, 0, scanRadius); + + Vector3 parentScale = transform.lossyScale; + scannerVisual.transform.localScale = new Vector3( + scanEdge / parentScale.x, + scanEdge / parentScale.y, + scanEdge / parentScale.z + ); + + meshRenderer = scannerVisual.GetComponent(); + + Material scannerMaterial = new Material(Shader.Find("Standard")); + scannerMaterial.color = new Color(0.5f, 0.8f, 1f, 0.15f); + + scannerMaterial.SetFloat("_Mode", 3); + scannerMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); + scannerMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); + scannerMaterial.SetInt("_ZWrite", 0); + scannerMaterial.DisableKeyword("_ALPHATEST_ON"); + scannerMaterial.EnableKeyword("_ALPHABLEND_ON"); + scannerMaterial.DisableKeyword("_ALPHAPREMULTIPLY_ON"); + scannerMaterial.renderQueue = 3000; + + meshRenderer.material = scannerMaterial; + + Destroy(scannerVisual.GetComponent()); + meshCollider = scannerVisual.AddComponent(); + meshCollider.convex = false; + meshCollider.isTrigger = true; + } + + public void ToggleScanner() + { + gameObject.SetActive(!gameObject.activeSelf); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/ScannerAlt.cs.meta b/Assets/Scripts/Core/ScannerAlt.cs.meta new file mode 100644 index 00000000..879381db --- /dev/null +++ b/Assets/Scripts/Core/ScannerAlt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ebf24131ce804a4cb91c0445d2bc4a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs b/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs index 0b3d3686..9bdfe6b0 100644 --- a/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs +++ b/Assets/Scripts/Core/UniversalTextScanner/SearchPoints/ScanningSearchPoint.cs @@ -18,7 +18,27 @@ public ScanningSearchPoint(GameObject scanner) { _scanner = scanner; _scannerVisual = scanner.transform.GetChild(0).gameObject; - _scannerRadius = scanner.GetComponent().ScanRadius * scanner.transform.localScale.x; + + // Try to get the original Scanner component first + var originalScanner = scanner.GetComponent(); + if (originalScanner != null) + { + _scannerRadius = originalScanner.ScanRadius * scanner.transform.localScale.x; + } + else + { + // Fall back to ScannerAlt + var alternativeScanner = scanner.GetComponent(); + if (alternativeScanner != null) + { + _scannerRadius = alternativeScanner.ScanRadius * scanner.transform.localScale.x; + } + else + { + Debug.LogError("No scanner component found on the provided GameObject"); + _scannerRadius = 0f; + } + } } public List Search() From d0e46454f1dbf195e49dd6fe53374bfaadc63a92 Mon Sep 17 00:00:00 2001 From: joshua-z-zheng Date: Thu, 27 Mar 2025 18:59:22 -0400 Subject: [PATCH 4/4] remove prefab from demoscene --- Assets/Prefabs/ScannerAlt.prefab | 6 +- Assets/Scenes/DemoScene.unity | 99 +------------------------------- 2 files changed, 5 insertions(+), 100 deletions(-) diff --git a/Assets/Prefabs/ScannerAlt.prefab b/Assets/Prefabs/ScannerAlt.prefab index 115ab559..ade014d0 100644 --- a/Assets/Prefabs/ScannerAlt.prefab +++ b/Assets/Prefabs/ScannerAlt.prefab @@ -29,7 +29,7 @@ Transform: serializedVersion: 2 m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} m_LocalPosition: {x: -0.1, y: -0.05, z: 0} - m_LocalScale: {x: 0.1, y: 0.05, z: 0.05} + m_LocalScale: {x: 0.10000001, y: 0.050000012, z: 0.050000016} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} @@ -96,5 +96,5 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9ebf24131ce804a4cb91c0445d2bc4a7, type: 3} m_Name: m_EditorClassIdentifier: - scanRadius: 5 - scanEdge: 0.1 + scanRadius: 10 + scanEdge: 0.2 diff --git a/Assets/Scenes/DemoScene.unity b/Assets/Scenes/DemoScene.unity index 8b2b3804..9074f697 100644 --- a/Assets/Scenes/DemoScene.unity +++ b/Assets/Scenes/DemoScene.unity @@ -577,10 +577,7 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] - m_AddedGameObjects: - - targetCorrespondingSourceObject: {fileID: 5456486938294406889, guid: 15b2f87506f6346efa4d7a6c469390c9, type: 3} - insertIndex: -1 - addedObject: {fileID: 500776042} + m_AddedGameObjects: [] m_AddedComponents: - targetCorrespondingSourceObject: {fileID: 7305686084408359732, guid: 15b2f87506f6346efa4d7a6c469390c9, type: 3} insertIndex: -1 @@ -654,16 +651,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9067480af55f5874d8f613b16812f968, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1 &500776041 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 2234413985285122603, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - m_PrefabInstance: {fileID: 1313480967} - m_PrefabAsset: {fileID: 0} ---- !u!4 &500776042 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - m_PrefabInstance: {fileID: 1313480967} - m_PrefabAsset: {fileID: 0} --- !u!1 &542048662 stripped GameObject: m_CorrespondingSourceObject: {fileID: 5500661605437975082, guid: 2db51a3ce7d7fe34a934d68f0c488f54, type: 3} @@ -1338,7 +1325,7 @@ MonoBehaviour: - rid: 150161715411288064 type: {class: ScanningSearchPointConfig, ns: UniversalText.UI, asm: Assembly-CSharp} data: - scanner: {fileID: 500776041} + scanner: {fileID: 0} - rid: 7219879472968237056 type: {class: GrabbingSearchPointConfig, ns: UniversalText.UI, asm: Assembly-CSharp} data: @@ -1750,83 +1737,6 @@ PrefabInstance: insertIndex: -1 addedObject: {fileID: 1176359129} m_SourcePrefab: {fileID: 100100000, guid: a5ac041b79f79364ca8481b503332787, type: 3} ---- !u!1001 &1313480967 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 1451708246} - m_Modifications: - - target: {fileID: -3042310315274692433, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: scanEdge - value: 0.2 - objectReference: {fileID: 0} - - target: {fileID: -3042310315274692433, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: scanRadius - value: 10 - objectReference: {fileID: 0} - - target: {fileID: 2234413985285122603, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_Name - value: ScannerAlt - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalScale.x - value: 0.10000001 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalScale.y - value: 0.050000012 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalScale.z - value: 0.050000016 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalPosition.x - value: -0.10000011 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalPosition.y - value: -0.050000012 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalRotation.w - value: 0.70710677 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalRotation.x - value: 0.70710677 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalRotation.y - value: -0.000000029802315 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalRotation.z - value: 0.000000029802315 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 90 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5711257108585402242, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 86010cfa120a747e794ff43d10c145bc, type: 3} --- !u!1001 &1390273401 PrefabInstance: m_ObjectHideFlags: 0 @@ -1984,11 +1894,6 @@ Transform: m_Children: [] m_Father: {fileID: 421595541} m_LocalEulerAnglesHint: {x: 36.773, y: -326.54102, z: -1.001} ---- !u!4 &1451708246 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5456486938294406889, guid: 15b2f87506f6346efa4d7a6c469390c9, type: 3} - m_PrefabInstance: {fileID: 405500946} - m_PrefabAsset: {fileID: 0} --- !u!1001 &1463193379 PrefabInstance: m_ObjectHideFlags: 0