diff --git a/vr-configurator/Assets/Scenes/SampleScene.unity b/vr-configurator/Assets/Scenes/SampleScene.unity index 125d86c..5015059 100644 --- a/vr-configurator/Assets/Scenes/SampleScene.unity +++ b/vr-configurator/Assets/Scenes/SampleScene.unity @@ -2623,6 +2623,51 @@ Transform: - {fileID: 629265989} m_Father: {fileID: 1971935363} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &163506086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 163506089} + - component: {fileID: 163506087} + m_Layer: 0 + m_Name: Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &163506087 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163506086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a2140d2b457bea84881488302059889b, type: 3} + m_Name: + m_EditorClassIdentifier: + _collider: {fileID: 698127117} +--- !u!4 &163506089 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163506086} + 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: [] + m_Father: {fileID: 698127115} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &164957671 GameObject: m_ObjectHideFlags: 0 @@ -7804,7 +7849,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: mm: {fileID: 1519836175} - baseModel: {fileID: 645201570} + baseModel: {fileID: 1272917964} text: {fileID: 1785144091} cms: {fileID: 1509914124} --- !u!114 &465093188 @@ -10134,6 +10179,51 @@ Transform: m_Children: [] m_Father: {fileID: 1260036348} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &557957009 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 557957010} + - component: {fileID: 557957011} + m_Layer: 0 + m_Name: Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &557957010 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 557957009} + 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: [] + m_Father: {fileID: 1272917965} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &557957011 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 557957009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a2140d2b457bea84881488302059889b, type: 3} + m_Name: + m_EditorClassIdentifier: + _collider: {fileID: 1272917966} --- !u!1 &558057070 GameObject: m_ObjectHideFlags: 0 @@ -11467,51 +11557,6 @@ Transform: m_Children: [] m_Father: {fileID: 682594831} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &645201570 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 645201571} - - component: {fileID: 645201572} - m_Layer: 0 - m_Name: BaseModel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &645201571 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 645201570} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} - m_LocalPosition: {x: -1, y: 0, z: -0.186} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1519836176} - m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} ---- !u!114 &645201572 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 645201570} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fd4fcdc40e7716b4fb712ddf70bf60d0, type: 3} - m_Name: - m_EditorClassIdentifier: - ModelManager: {fileID: 1519836175} --- !u!1 &649234082 GameObject: m_ObjectHideFlags: 0 @@ -12622,6 +12667,196 @@ Transform: - {fileID: 1401170339} m_Father: {fileID: 904952100} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &698127109 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 698127115} + - component: {fileID: 698127113} + - component: {fileID: 698127112} + - component: {fileID: 698127110} + - component: {fileID: 698127117} + - component: {fileID: 698127119} + - component: {fileID: 698127120} + m_Layer: 0 + m_Name: ChildModelPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &698127110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698127109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bb86ba9d4c5126e48bfef9b0c9550e9d, type: 3} + m_Name: + m_EditorClassIdentifier: + _interactorFilters: [] + _maxInteractors: -1 + _maxSelectingInteractors: -1 + _data: {fileID: 0} + _pointableElement: {fileID: 0} + _surface: {fileID: 163506087} + _selectSurface: {fileID: 0} + _movementProvider: {fileID: 0} + _tiebreakerScore: 0 +--- !u!23 &698127112 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698127109} + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 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!33 &698127113 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698127109} + m_Mesh: {fileID: 0} +--- !u!4 &698127115 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698127109} + 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: 163506089} + m_Father: {fileID: 1519836176} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &698127117 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698127109} + 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: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 0} +--- !u!114 &698127119 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698127109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1464721f2283eb14e94a33e812b47be4, type: 3} + m_Name: + m_EditorClassIdentifier: + _interactableView: {fileID: 698127110} + _whenHover: + m_PersistentCalls: + m_Calls: [] + _whenUnhover: + m_PersistentCalls: + m_Calls: [] + _whenSelect: + m_PersistentCalls: + m_Calls: [] + _whenUnselect: + m_PersistentCalls: + m_Calls: [] + _whenInteractorViewAdded: + m_PersistentCalls: + m_Calls: [] + _whenInteractorViewRemoved: + m_PersistentCalls: + m_Calls: [] + _whenSelectingInteractorViewAdded: + m_PersistentCalls: + m_Calls: [] + _whenSelectingInteractorViewRemoved: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &698127120 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 698127109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9105cf5e0ef6414eafbf5b9ae838cca, type: 3} + m_Name: + m_EditorClassIdentifier: + ModelManager: {fileID: 1519836175} + meshFilter: {fileID: 698127113} + meshRenderer: {fileID: 698127112} + meshCollider: {fileID: 698127117} + colliderSurface: {fileID: 163506087} + interactable: {fileID: 698127119} + rayInteractable: {fileID: 698127110} --- !u!1 &700047848 GameObject: m_ObjectHideFlags: 0 @@ -18480,7 +18715,7 @@ MonoBehaviour: _data: {fileID: 0} _selector: {fileID: 308886932} _rayOrigin: {fileID: 834612489} - _maxRayLength: 5 + _maxRayLength: 20 _equalDistanceThreshold: 0.001 --- !u!114 &1048888356 MonoBehaviour: @@ -21434,6 +21669,196 @@ Transform: m_Children: [] m_Father: {fileID: 419606959} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1272917964 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1272917965} + - component: {fileID: 1272917971} + - component: {fileID: 1272917970} + - component: {fileID: 1272917969} + - component: {fileID: 1272917966} + - component: {fileID: 1272917968} + - component: {fileID: 1272917967} + m_Layer: 0 + m_Name: BaseModel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1272917965 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1272917964} + 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: 557957010} + m_Father: {fileID: 1519836176} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &1272917966 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1272917964} + 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: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 0} +--- !u!114 &1272917967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1272917964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fd4fcdc40e7716b4fb712ddf70bf60d0, type: 3} + m_Name: + m_EditorClassIdentifier: + ModelManager: {fileID: 1519836175} + meshFilter: {fileID: 1272917971} + meshRenderer: {fileID: 1272917970} + meshCollider: {fileID: 1272917966} + colliderSurface: {fileID: 557957011} + interactable: {fileID: 1272917968} + rayInteractable: {fileID: 1272917969} +--- !u!114 &1272917968 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1272917964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1464721f2283eb14e94a33e812b47be4, type: 3} + m_Name: + m_EditorClassIdentifier: + _interactableView: {fileID: 1272917969} + _whenHover: + m_PersistentCalls: + m_Calls: [] + _whenUnhover: + m_PersistentCalls: + m_Calls: [] + _whenSelect: + m_PersistentCalls: + m_Calls: [] + _whenUnselect: + m_PersistentCalls: + m_Calls: [] + _whenInteractorViewAdded: + m_PersistentCalls: + m_Calls: [] + _whenInteractorViewRemoved: + m_PersistentCalls: + m_Calls: [] + _whenSelectingInteractorViewAdded: + m_PersistentCalls: + m_Calls: [] + _whenSelectingInteractorViewRemoved: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1272917969 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1272917964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bb86ba9d4c5126e48bfef9b0c9550e9d, type: 3} + m_Name: + m_EditorClassIdentifier: + _interactorFilters: [] + _maxInteractors: -1 + _maxSelectingInteractors: -1 + _data: {fileID: 0} + _pointableElement: {fileID: 0} + _surface: {fileID: 557957011} + _selectSurface: {fileID: 0} + _movementProvider: {fileID: 0} + _tiebreakerScore: 0 +--- !u!23 &1272917970 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1272917964} + 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_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 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!33 &1272917971 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1272917964} + m_Mesh: {fileID: 0} --- !u!1 &1275794565 GameObject: m_ObjectHideFlags: 0 @@ -23339,7 +23764,7 @@ MonoBehaviour: _data: {fileID: 0} _selector: {fileID: 1134997752} _rayOrigin: {fileID: 1326707245} - _maxRayLength: 5 + _maxRayLength: 20 _equalDistanceThreshold: 0.001 --- !u!114 &1406129326 MonoBehaviour: @@ -25940,8 +26365,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d328782a7e1a9ff42a3c023ed7e0d15d, type: 3} m_Name: m_EditorClassIdentifier: - baseModelGO: {fileID: 645201570} + baseModelGO: {fileID: 1272917964} baseModelSelector: {fileID: 624025131} + childModelPrefab: {fileID: 698127109} --- !u!4 &1519836176 Transform: m_ObjectHideFlags: 0 @@ -25955,7 +26381,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 645201571} + - {fileID: 1272917965} + - {fileID: 698127115} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1526174809 @@ -27239,7 +27666,7 @@ MonoBehaviour: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1591058970} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} m_Name: @@ -27300,7 +27727,7 @@ MonoBehaviour: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1591058970} - m_Enabled: 0 + m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 2518c50cb3fc6a6458d4b743c2f69c7d, type: 3} m_Name: @@ -36848,7 +37275,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a28b3692aca31b141907b971599c1e61, type: 3} m_Name: m_EditorClassIdentifier: - basemodel: {fileID: 0} + basemodel: {fileID: 1272917964} rotationSlider: {fileID: 2108164464} joystickSpeed: 50 --- !u!114 &2108164464 @@ -87902,7 +88329,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 + m_ConstrainProportionsScale: 1 m_Children: [] m_Father: {fileID: 2104939686401103236} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/vr-configurator/Assets/Scripts/Models/ModelBehaviour.cs b/vr-configurator/Assets/Scripts/Models/ModelBehaviour.cs index a637655..75c1249 100644 --- a/vr-configurator/Assets/Scripts/Models/ModelBehaviour.cs +++ b/vr-configurator/Assets/Scripts/Models/ModelBehaviour.cs @@ -1,5 +1,6 @@ -using System.Collections.Generic; -using Unity.VisualScripting; +using Oculus.Interaction; +using Oculus.Interaction.Surfaces; +using System.Collections.Generic; using UnityEngine; /// @@ -8,7 +9,7 @@ using UnityEngine; public class ModelBehaviour : MonoBehaviour, IResettable { public ModelManager ModelManager; - private Model _model; + Model _model; internal Model Model { @@ -21,10 +22,17 @@ public class ModelBehaviour : MonoBehaviour, IResettable UpdateModel(value); _model = value; } - } //should be verified + } readonly List _children = new List(); - MeshFilter _meshFilter; - MeshRenderer _meshRenderer; + + public MeshFilter meshFilter; + public MeshRenderer meshRenderer; + public MeshCollider meshCollider; + public ColliderSurface colliderSurface; + public InteractableUnityEventWrapper interactable; + public RayInteractable rayInteractable; + + bool lateInited = false; Color _color = Color.black; Color Color @@ -35,9 +43,9 @@ public class ModelBehaviour : MonoBehaviour, IResettable } set { - var clonedMaterial = new Material(_meshRenderer.material); //clone da sonst alle anderen mit dem mat auch colorchanged werden + var clonedMaterial = new Material(meshRenderer.material); //clone da sonst alle anderen mit dem mat auch colorchanged werden clonedMaterial.color = value; - _meshRenderer.material = clonedMaterial; + meshRenderer.material = clonedMaterial; Debug.Log($"{name}: Set color from {_color} to {value}"); _color = value; if (Model.Passthrough) @@ -59,14 +67,23 @@ public class ModelBehaviour : MonoBehaviour, IResettable void Init() { - if(_meshFilter == null) - _meshFilter = gameObject.GetOrAddComponent(); - if(_meshRenderer == null) - _meshRenderer = gameObject.GetOrAddComponent(); if (ModelManager == null) ModelManager = FindFirstObjectByType(); } + void LateUpdate() + { + if (!lateInited) + { + if (interactable.WhenSelect == null) + { + return; + } + interactable.WhenSelect.AddListener(OnSelect); + lateInited = true; + } + } + void UpdateModel(Model newModel) { Debug.Log($"UpdateModel: {name} updates from {(Model == null ? "null" : Model.NameId)} to {newModel.NameId}"); @@ -92,7 +109,7 @@ public class ModelBehaviour : MonoBehaviour, IResettable //kill old children foreach (var compo in GetComponentsInChildren()) { - if (compo == this) // because InChildren include the parent + if (this is ChildModelBehaviour cmb && compo == cmb) //dont delete ourselves { continue; } @@ -101,10 +118,11 @@ public class ModelBehaviour : MonoBehaviour, IResettable _children.Remove(compo.gameObject); } //change ourselves - _meshFilter.mesh = newModel.Mesh; - _meshFilter.sharedMesh = newModel.Mesh; - _meshRenderer.material = newModel.Material; - _meshRenderer.sharedMaterial = newModel.Material; + meshFilter.mesh = newModel.Mesh; + meshFilter.sharedMesh = newModel.Mesh; + meshRenderer.material = newModel.Material; + meshRenderer.sharedMaterial = newModel.Material; + meshCollider.sharedMesh = newModel.Mesh; transform.localRotation = newModel.Rotation; transform.localScale = newModel.Scale; transform.localPosition += newModel.Offset; @@ -149,10 +167,9 @@ public class ModelBehaviour : MonoBehaviour, IResettable var port = newModel.Ports[i]; Debug.Log(i + ". Creating port " + port.PortID); // name is set in UpdateModel of own model - GameObject child = new GameObject("unattended child"); - child.transform.SetParent(this.transform); //makes this an actual child - child.transform.localPosition = Vector3.zero; //i love unity - ChildModelBehaviour cmb = child.AddComponent(); + GameObject child = Spawn.GO(ModelManager.childModelPrefab, transform, Vector3.zero, "unattended child"); + child.SetActive(true); + ChildModelBehaviour cmb = child.GetComponent(); _children.Add(child); var childModel = ModelManager.GetById(port.DefaultId); @@ -163,12 +180,10 @@ public class ModelBehaviour : MonoBehaviour, IResettable continue; } - Debug.Log($"SET POS {child.transform.gameObject.name} pos {child.transform.localPosition} {child.transform.rotation} {child.transform.localScale}"); + Debug.Log($"POS {child.transform.gameObject.name} pos {child.transform.localPosition} {child.transform.rotation} {child.transform.localScale}"); cmb.Parent = this; cmb.ChildModel = childModel; - Debug.Log($"AFTER SET PRE PORT POS {child.transform.gameObject.name} pos {child.transform.localPosition} {child.transform.rotation} {child.transform.localScale}"); port.Apply(child.transform); // move to correct position - Debug.Log($"AFTER PORT POS {child.transform.gameObject.name} pos {child.transform.localPosition} {child.transform.rotation} {child.transform.localScale}"); } } @@ -248,6 +263,13 @@ public class ModelBehaviour : MonoBehaviour, IResettable _children.Clear(); Debug.Log("Removed."); } + + //model clicked + void OnSelect() + { + Debug.Log($"Selected {name}"); + + } public void ResetThis() { diff --git a/vr-configurator/Assets/Scripts/Models/ModelManager.cs b/vr-configurator/Assets/Scripts/Models/ModelManager.cs index 9704938..4ac3c33 100644 --- a/vr-configurator/Assets/Scripts/Models/ModelManager.cs +++ b/vr-configurator/Assets/Scripts/Models/ModelManager.cs @@ -21,6 +21,8 @@ public class ModelManager : MonoBehaviour, IResettable } public BaseModelSelector baseModelSelector; + public GameObject childModelPrefab; + // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() {