Prefabize ChildModels, Onclick for parts

This commit is contained in:
Tim
2025-07-09 11:48:41 +02:00
parent a53e9e3d85
commit d378c45e2a
3 changed files with 529 additions and 78 deletions

View File

@@ -2623,6 +2623,51 @@ Transform:
- {fileID: 629265989} - {fileID: 629265989}
m_Father: {fileID: 1971935363} m_Father: {fileID: 1971935363}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 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 --- !u!1 &164957671
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -7804,7 +7849,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
mm: {fileID: 1519836175} mm: {fileID: 1519836175}
baseModel: {fileID: 645201570} baseModel: {fileID: 1272917964}
text: {fileID: 1785144091} text: {fileID: 1785144091}
cms: {fileID: 1509914124} cms: {fileID: 1509914124}
--- !u!114 &465093188 --- !u!114 &465093188
@@ -10134,6 +10179,51 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 1260036348} m_Father: {fileID: 1260036348}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 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 --- !u!1 &558057070
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -11467,51 +11557,6 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 682594831} m_Father: {fileID: 682594831}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 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 --- !u!1 &649234082
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -12622,6 +12667,196 @@ Transform:
- {fileID: 1401170339} - {fileID: 1401170339}
m_Father: {fileID: 904952100} m_Father: {fileID: 904952100}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 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 --- !u!1 &700047848
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -18480,7 +18715,7 @@ MonoBehaviour:
_data: {fileID: 0} _data: {fileID: 0}
_selector: {fileID: 308886932} _selector: {fileID: 308886932}
_rayOrigin: {fileID: 834612489} _rayOrigin: {fileID: 834612489}
_maxRayLength: 5 _maxRayLength: 20
_equalDistanceThreshold: 0.001 _equalDistanceThreshold: 0.001
--- !u!114 &1048888356 --- !u!114 &1048888356
MonoBehaviour: MonoBehaviour:
@@ -21434,6 +21669,196 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 419606959} m_Father: {fileID: 419606959}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 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 --- !u!1 &1275794565
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -23339,7 +23764,7 @@ MonoBehaviour:
_data: {fileID: 0} _data: {fileID: 0}
_selector: {fileID: 1134997752} _selector: {fileID: 1134997752}
_rayOrigin: {fileID: 1326707245} _rayOrigin: {fileID: 1326707245}
_maxRayLength: 5 _maxRayLength: 20
_equalDistanceThreshold: 0.001 _equalDistanceThreshold: 0.001
--- !u!114 &1406129326 --- !u!114 &1406129326
MonoBehaviour: MonoBehaviour:
@@ -25940,8 +26365,9 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d328782a7e1a9ff42a3c023ed7e0d15d, type: 3} m_Script: {fileID: 11500000, guid: d328782a7e1a9ff42a3c023ed7e0d15d, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
baseModelGO: {fileID: 645201570} baseModelGO: {fileID: 1272917964}
baseModelSelector: {fileID: 624025131} baseModelSelector: {fileID: 624025131}
childModelPrefab: {fileID: 698127109}
--- !u!4 &1519836176 --- !u!4 &1519836176
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -25955,7 +26381,8 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 645201571} - {fileID: 1272917965}
- {fileID: 698127115}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1526174809 --- !u!1 &1526174809
@@ -27239,7 +27666,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1591058970} m_GameObject: {fileID: 1591058970}
m_Enabled: 1 m_Enabled: 0
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3}
m_Name: m_Name:
@@ -27300,7 +27727,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1591058970} m_GameObject: {fileID: 1591058970}
m_Enabled: 0 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2518c50cb3fc6a6458d4b743c2f69c7d, type: 3} m_Script: {fileID: 11500000, guid: 2518c50cb3fc6a6458d4b743c2f69c7d, type: 3}
m_Name: m_Name:
@@ -36848,7 +37275,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a28b3692aca31b141907b971599c1e61, type: 3} m_Script: {fileID: 11500000, guid: a28b3692aca31b141907b971599c1e61, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
basemodel: {fileID: 0} basemodel: {fileID: 1272917964}
rotationSlider: {fileID: 2108164464} rotationSlider: {fileID: 2108164464}
joystickSpeed: 50 joystickSpeed: 50
--- !u!114 &2108164464 --- !u!114 &2108164464
@@ -87902,7 +88329,7 @@ Transform:
m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068}
m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalPosition: {x: -0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 1
m_Children: [] m_Children: []
m_Father: {fileID: 2104939686401103236} m_Father: {fileID: 2104939686401103236}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@@ -1,5 +1,6 @@
using System.Collections.Generic; using Oculus.Interaction;
using Unity.VisualScripting; using Oculus.Interaction.Surfaces;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
/// <summary> /// <summary>
@@ -8,7 +9,7 @@ using UnityEngine;
public class ModelBehaviour : MonoBehaviour, IResettable public class ModelBehaviour : MonoBehaviour, IResettable
{ {
public ModelManager ModelManager; public ModelManager ModelManager;
private Model _model; Model _model;
internal Model Model internal Model Model
{ {
@@ -21,10 +22,17 @@ public class ModelBehaviour : MonoBehaviour, IResettable
UpdateModel(value); UpdateModel(value);
_model = value; _model = value;
} }
} //should be verified }
readonly List<GameObject> _children = new List<GameObject>(); readonly List<GameObject> _children = new List<GameObject>();
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 = Color.black;
Color Color Color Color
@@ -35,9 +43,9 @@ public class ModelBehaviour : MonoBehaviour, IResettable
} }
set 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; clonedMaterial.color = value;
_meshRenderer.material = clonedMaterial; meshRenderer.material = clonedMaterial;
Debug.Log($"{name}: Set color from {_color} to {value}"); Debug.Log($"{name}: Set color from {_color} to {value}");
_color = value; _color = value;
if (Model.Passthrough) if (Model.Passthrough)
@@ -59,14 +67,23 @@ public class ModelBehaviour : MonoBehaviour, IResettable
void Init() void Init()
{ {
if(_meshFilter == null)
_meshFilter = gameObject.GetOrAddComponent<MeshFilter>();
if(_meshRenderer == null)
_meshRenderer = gameObject.GetOrAddComponent<MeshRenderer>();
if (ModelManager == null) if (ModelManager == null)
ModelManager = FindFirstObjectByType<ModelManager>(); ModelManager = FindFirstObjectByType<ModelManager>();
} }
void LateUpdate()
{
if (!lateInited)
{
if (interactable.WhenSelect == null)
{
return;
}
interactable.WhenSelect.AddListener(OnSelect);
lateInited = true;
}
}
void UpdateModel(Model newModel) void UpdateModel(Model newModel)
{ {
Debug.Log($"UpdateModel: {name} updates from {(Model == null ? "null" : Model.NameId)} to {newModel.NameId}"); 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 //kill old children
foreach (var compo in GetComponentsInChildren<ChildModelBehaviour>()) foreach (var compo in GetComponentsInChildren<ChildModelBehaviour>())
{ {
if (compo == this) // because InChildren include the parent if (this is ChildModelBehaviour cmb && compo == cmb) //dont delete ourselves
{ {
continue; continue;
} }
@@ -101,10 +118,11 @@ public class ModelBehaviour : MonoBehaviour, IResettable
_children.Remove(compo.gameObject); _children.Remove(compo.gameObject);
} }
//change ourselves //change ourselves
_meshFilter.mesh = newModel.Mesh; meshFilter.mesh = newModel.Mesh;
_meshFilter.sharedMesh = newModel.Mesh; meshFilter.sharedMesh = newModel.Mesh;
_meshRenderer.material = newModel.Material; meshRenderer.material = newModel.Material;
_meshRenderer.sharedMaterial = newModel.Material; meshRenderer.sharedMaterial = newModel.Material;
meshCollider.sharedMesh = newModel.Mesh;
transform.localRotation = newModel.Rotation; transform.localRotation = newModel.Rotation;
transform.localScale = newModel.Scale; transform.localScale = newModel.Scale;
transform.localPosition += newModel.Offset; transform.localPosition += newModel.Offset;
@@ -149,10 +167,9 @@ public class ModelBehaviour : MonoBehaviour, IResettable
var port = newModel.Ports[i]; var port = newModel.Ports[i];
Debug.Log(i + ". Creating port " + port.PortID); Debug.Log(i + ". Creating port " + port.PortID);
// name is set in UpdateModel of own model // name is set in UpdateModel of own model
GameObject child = new GameObject("unattended child"); GameObject child = Spawn.GO(ModelManager.childModelPrefab, transform, Vector3.zero, "unattended child");
child.transform.SetParent(this.transform); //makes this an actual child child.SetActive(true);
child.transform.localPosition = Vector3.zero; //i love unity ChildModelBehaviour cmb = child.GetComponent<ChildModelBehaviour>();
ChildModelBehaviour cmb = child.AddComponent<ChildModelBehaviour>();
_children.Add(child); _children.Add(child);
var childModel = ModelManager.GetById(port.DefaultId); var childModel = ModelManager.GetById(port.DefaultId);
@@ -163,12 +180,10 @@ public class ModelBehaviour : MonoBehaviour, IResettable
continue; 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.Parent = this;
cmb.ChildModel = childModel; 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 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(); _children.Clear();
Debug.Log("Removed."); Debug.Log("Removed.");
} }
//model clicked
void OnSelect()
{
Debug.Log($"Selected {name}");
}
public void ResetThis() public void ResetThis()
{ {

View File

@@ -21,6 +21,8 @@ public class ModelManager : MonoBehaviour, IResettable
} }
public BaseModelSelector baseModelSelector; public BaseModelSelector baseModelSelector;
public GameObject childModelPrefab;
// Start is called once before the first execution of Update after the MonoBehaviour is created // Start is called once before the first execution of Update after the MonoBehaviour is created
void Start() void Start()
{ {