feat(shop): configurable package display rotation, pocoregal shelf model

Add _displayRotationEuler to Lieferkarton/ShelfSlot so package prefabs
with a non-upright export orientation can be corrected per-container
without touching PackageDisplay code. Fixes a bug where flying packages
landed with a different rotation than the resting shelf display
(PlayerCarry used the raw shelf transform instead of
ShelfSlot.GetSlotWorldRotation()).

Also adds the pocoregal shelf model (Blender export) and its materials,
places it in the Shop scene, registers ShelfSlot as a network prefab,
and rescales EmptyBox. See docs/PACKAGE_DISPLAY_SETUP.md for the
display-grid setup/troubleshooting reference.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-16 16:13:32 +02:00
co-authored by Claude Sonnet 5
parent 8ca4858082
commit 9eb588e491
19 changed files with 1126 additions and 285 deletions
BIN
View File
Binary file not shown.
+130
View File
@@ -0,0 +1,130 @@
fileFormatVersion: 2
guid: 5c9a39e08880616408f183effa8a1471
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
+139
View File
@@ -0,0 +1,139 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Material_0
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Opaque
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 0.9063317, g: 0.9063317, b: 0.9063317, a: 1}
- _Color: {r: 0.9063317, g: 0.9063317, b: 0.9063317, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 0}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &5242375075943231414
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2e7dcbb3e7bec1b40a660bcded47ca91
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 34a41c24e42f67f4381bae7060d06165
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,137 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Meshy_AI_cardboard_plain_basecolor
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Opaque
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 2800000, guid: d0cc4b99517b2e343903d3d15cf58d62, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: d0cc4b99517b2e343903d3d15cf58d62, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 0
- _Glossiness: 0
- _GlossyReflections: 0
- _Metallic: 0
- _OcclusionStrength: 1
- _Parallax: 0.005
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &3112008372610959805
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9ff3d1c8bfaace6428d25719c6afa121
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+139
View File
@@ -0,0 +1,139 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-4397202985679810975
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: material
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Opaque
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 0.9063317, g: 0.9063317, b: 0.9063317, a: 1}
- _Color: {r: 0.9063317, g: 0.9063317, b: 0.9063317, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 0}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f606e9a1958bd884db14af31ff656b15
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+119
View File
@@ -0,0 +1,119 @@
fileFormatVersion: 2
guid: 1f9262bb33b3873428a17c14cbd3ea53
ModelImporter:
serializedVersion: 24501
internalIDToNameTable: []
externalObjects:
- first:
type: UnityEngine:Texture2D
assembly: UnityEngine.CoreModule
name: Image_0
second: {fileID: 2800000, guid: 5c9a39e08880616408f183effa8a1471, type: 3}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
searchTexturesGlobally: 0
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
generateMeshLods: 0
meshLodGenerationFlags: 0
maximumMeshLod: -1
importUVs: -1
importVertexColors: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
calculateBlendshapeNormalsDeltaFromImportedNormals: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+2 -2
View File
@@ -26,8 +26,8 @@ Transform:
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 3.59233, y: -0, z: -0.28607} m_LocalPosition: {x: 3.59233, y: -0, z: -0.28607}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 1
m_Children: m_Children:
- {fileID: 6117590660017847771} - {fileID: 6117590660017847771}
m_Father: {fileID: 0} m_Father: {fileID: 0}
+296 -276
View File
@@ -2644,6 +2644,63 @@ MonoBehaviour:
m_PreInfinity: 2 m_PreInfinity: 2
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
--- !u!1001 &238985022
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.x
value: -3.028
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.y
value: 0.792
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.z
value: -3.6858945
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.w
value: 0.7071067
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.x
value: -0.7071068
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_Name
value: pocoregal (2)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
--- !u!1 &317573032 --- !u!1 &317573032
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -2976,6 +3033,133 @@ Transform:
m_Children: [] m_Children: []
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 &413821662
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 413821665}
- component: {fileID: 413821664}
- component: {fileID: 413821663}
m_Layer: 0
m_Name: Area Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &413821663
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 413821662}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalLightData
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_CustomShadowLayers: 0
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 0
m_RenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_ShadowRenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_Version: 4
m_LightLayerMask: 1
m_ShadowLayerMask: 1
m_RenderingLayers: 1
m_ShadowRenderingLayers: 1
--- !u!108 &413821664
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 413821662}
m_Enabled: 1
serializedVersion: 13
m_Type: 3
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize2D: {x: 0.5, y: 0.5}
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_CullingMatrixOverride:
e00: 1
e01: 0
e02: 0
e03: 0
e10: 0
e11: 1
e12: 0
e13: 0
e20: 0
e21: 0
e22: 1
e23: 0
e30: 0
e31: 0
e32: 0
e33: 1
m_UseCullingMatrixOverride: 0
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ForceVisible: 0
m_ShapeRadius: 0.025
m_ShadowAngle: 0
m_LightUnit: 1
m_LuxAtDistance: 1
m_EnableSpotReflector: 1
--- !u!4 &413821665
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 413821662}
serializedVersion: 2
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: -1.059, y: 1.99, z: -6.45}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!1 &459066855 --- !u!1 &459066855
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -3415,6 +3599,63 @@ MonoBehaviour:
m_EditorClassIdentifier: AfterHours.Runtime::AfterHours.Core.ShopEconomy m_EditorClassIdentifier: AfterHours.Runtime::AfterHours.Core.ShopEconomy
ShowTopMostFoldoutHeaderGroup: 1 ShowTopMostFoldoutHeaderGroup: 1
_startingBalance: 2500 _startingBalance: 2500
--- !u!1001 &784764716
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.x
value: -2.172
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.y
value: 0.792
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.z
value: -3.6858945
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.w
value: 0.7071067
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.x
value: -0.7071068
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_Name
value: pocoregal (1)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
--- !u!1 &816284369 --- !u!1 &816284369
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -3989,6 +4230,10 @@ MonoBehaviour:
_startingQuantity: 12 _startingQuantity: 12
_contentsRoot: {fileID: 53478575} _contentsRoot: {fileID: 53478575}
_maxVisiblePackages: 12 _maxVisiblePackages: 12
_displayColumns: 3
_displayRows: 3
_displaySpacing: {x: 0.12, y: 0.1, z: 0.12}
_displayRotationEuler: {x: 0, y: 0, z: 0}
--- !u!65 &959439196 --- !u!65 &959439196
BoxCollider: BoxCollider:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -4828,7 +5073,7 @@ Transform:
m_Children: [] m_Children: []
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!1001 &1417349271 --- !u!1001 &1445302135
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 2 serializedVersion: 2
@@ -4836,283 +5081,59 @@ PrefabInstance:
serializedVersion: 3 serializedVersion: 3
m_TransformParent: {fileID: 0} m_TransformParent: {fileID: 0}
m_Modifications: m_Modifications:
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalScale.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: m_LocalScale.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: m_LocalScale.z
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: -1.3858304 value: -2.601795
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.y propertyPath: m_LocalPosition.y
value: 1.514 value: 0.792
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: -1.4691107 value: -3.6858945
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.w propertyPath: m_LocalRotation.w
value: 1 value: 0.7071067
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.x propertyPath: m_LocalRotation.x
value: 0 value: -0.7071068
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.y propertyPath: m_LocalRotation.y
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.z propertyPath: m_LocalRotation.z
value: 0 value: -0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.x propertyPath: m_LocalEulerAnglesHint.x
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.y propertyPath: m_LocalEulerAnglesHint.y
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: -7511558181221131132, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_ConstrainProportionsScale
value: 1
objectReference: {fileID: 0}
- target: {fileID: -7811546481615063722, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: 'm_Materials.Array.data[0]' propertyPath: 'm_Materials.Array.data[0]'
value: value:
objectReference: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2} objectReference: {fileID: 4611759551533685079, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
- target: {fileID: -3469552933019998406, guid: 69a3530ccec5227468a531304b78a21f, type: 3} - target: {fileID: 919132149155446097, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_ConstrainProportionsScale
value: 1
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: m_Name propertyPath: m_Name
value: duschi value: pocoregal
objectReference: {fileID: 0}
- target: {fileID: 2854563699051640978, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: m_LocalPosition.x
value: -0.00003
objectReference: {fileID: 0}
- target: {fileID: 2854563699051640978, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: m_LocalPosition.y
value: 0.00961
objectReference: {fileID: 0}
- target: {fileID: 2854563699051640978, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: m_LocalPosition.z
value: -0.00003
objectReference: {fileID: 0}
- target: {fileID: 8234469714527775707, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: m_LocalPosition.x
value: -0.00313
objectReference: {fileID: 0}
- target: {fileID: 8234469714527775707, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: m_LocalPosition.y
value: 0.01452
objectReference: {fileID: 0}
- target: {fileID: 8234469714527775707, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
propertyPath: m_LocalPosition.z
value: -0.00012
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: m_AddedComponents: []
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 69a3530ccec5227468a531304b78a21f, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
insertIndex: -1
addedObject: {fileID: 1417349273}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
insertIndex: -1
addedObject: {fileID: 1417349279}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
insertIndex: -1
addedObject: {fileID: 1417349278}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
insertIndex: -1
addedObject: {fileID: 1417349277}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
insertIndex: -1
addedObject: {fileID: 1417349276}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
insertIndex: -1
addedObject: {fileID: 1417349275}
m_SourcePrefab: {fileID: 100100000, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
--- !u!1 &1417349272 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
m_PrefabInstance: {fileID: 1417349271}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1417349273
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1417349272}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
GlobalObjectIdHash: 2112740835
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
m_InScenePlaced: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 0
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!4 &1417349274 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2854563699051640978, guid: 69a3530ccec5227468a531304b78a21f, type: 3}
m_PrefabInstance: {fileID: 1417349271}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1417349275
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1417349272}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 32916d8b8a2c5784ba393cf3448b5556, type: 3}
m_Name:
m_EditorClassIdentifier: AfterHours.Runtime::AfterHours.Shop.BoneVibration
ShowTopMostFoldoutHeaderGroup: 1
_topBone: {fileID: 1417349274}
_intensity: 0.1
--- !u!65 &1417349276
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1417349272}
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: 3
m_Size: {x: 1, y: 2.6454363, z: 1.0979548}
m_Center: {x: 0, y: -0.20746946, z: 0.102712035}
--- !u!114 &1417349277
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1417349272}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f6c0be61502bb534f922ebb746851216, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkRigidbody
ShowTopMostFoldoutHeaderGroup: 1
NetworkRigidbodyBaseExpanded: 0
UseRigidBodyForMotion: 0
AutoUpdateKinematicState: 1
AutoSetKinematicOnDespawn: 1
--- !u!54 &1417349278
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1417349272}
serializedVersion: 5
m_Mass: 1
m_LinearDamping: 0
m_AngularDamping: 0.01
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!114 &1417349279
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1417349272}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.Components.NetworkTransform
ShowTopMostFoldoutHeaderGroup: 1
NetworkTransformExpanded: 0
AutoOwnerAuthorityTickOffset: 1
PositionInterpolationType: 0
RotationInterpolationType: 0
ScaleInterpolationType: 0
PositionLerpSmoothing: 1
PositionMaxInterpolationTime: 0.1
RotationLerpSmoothing: 1
RotationMaxInterpolationTime: 0.1
ScaleLerpSmoothing: 1
ScaleMaxInterpolationTime: 0.1
AuthorityMode: 0
TickSyncChildren: 0
UseUnreliableDeltas: 0
SyncPositionX: 1
SyncPositionY: 1
SyncPositionZ: 1
SyncRotAngleX: 1
SyncRotAngleY: 1
SyncRotAngleZ: 1
SyncScaleX: 1
SyncScaleY: 1
SyncScaleZ: 1
PositionThreshold: 0.001
RotAngleThreshold: 0.01
ScaleThreshold: 0.01
UseQuaternionSynchronization: 0
UseQuaternionCompression: 0
UseHalfFloatPrecision: 0
InLocalSpace: 0
SwitchTransformSpaceWhenParented: 0
Interpolate: 1
SlerpPosition: 0
--- !u!1 &1450758736 --- !u!1 &1450758736
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -5531,7 +5552,7 @@ Transform:
m_Children: [] m_Children: []
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!1001 &1637614133 --- !u!1001 &1590039329
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 2 serializedVersion: 2
@@ -5539,59 +5560,55 @@ PrefabInstance:
serializedVersion: 3 serializedVersion: 3
m_TransformParent: {fileID: 0} m_TransformParent: {fileID: 0}
m_Modifications: m_Modifications:
- target: {fileID: -8679921383154817045, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: -4.018 value: 5.87
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.y propertyPath: m_LocalPosition.y
value: 1.047 value: 0.792
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: 0.603 value: -3.6858945
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.w propertyPath: m_LocalRotation.w
value: 0.7071067 value: 0.15844499
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.x propertyPath: m_LocalRotation.x
value: -0.7071068 value: -0.15844509
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.y propertyPath: m_LocalRotation.y
value: 0 value: 0.68912655
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalRotation.z propertyPath: m_LocalRotation.z
value: -0 value: 0.6891263
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.x propertyPath: m_LocalEulerAnglesHint.x
value: 0 value: -90
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.y propertyPath: m_LocalEulerAnglesHint.y
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: -8679921383154817045, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 154.103
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: -7511558181221131132, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} - target: {fileID: 919132149155446097, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: 9ff3d1c8bfaace6428d25719c6afa121, type: 2}
- target: {fileID: 919132149155446097, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3}
propertyPath: m_Name propertyPath: m_Name
value: Meshy_AI_wooden_shelf_3_compar_0814175655_image-to-3d-texture value: pocoregal (3)
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: [] m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 0d912f468f12f1a48b2df1314b991b38, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 1f9262bb33b3873428a17c14cbd3ea53, type: 3}
--- !u!1 &1658583203 --- !u!1 &1658583203
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -6233,6 +6250,9 @@ SceneRoots:
- {fileID: 64083408} - {fileID: 64083408}
- {fileID: 959439187} - {fileID: 959439187}
- {fileID: 1091476159} - {fileID: 1091476159}
- {fileID: 1417349271}
- {fileID: 1637614133}
- {fileID: 1658583206} - {fileID: 1658583206}
- {fileID: 1445302135}
- {fileID: 784764716}
- {fileID: 1590039329}
- {fileID: 238985022}
- {fileID: 413821665}
+1 -1
View File
@@ -128,7 +128,7 @@ namespace AfterHours.Networking
Vector3 start = box.transform.position + Vector3.up * 0.3f; Vector3 start = box.transform.position + Vector3.up * 0.3f;
Vector3 end = shelf.GetSlotWorldPosition(landingIndex); Vector3 end = shelf.GetSlotWorldPosition(landingIndex);
FlyingPackage.Spawn(prefab, start, end, shelf.transform.rotation, _flightDuration); FlyingPackage.Spawn(prefab, start, end, shelf.GetSlotWorldRotation(), _flightDuration);
} }
} }
} }
+2 -1
View File
@@ -29,6 +29,7 @@ namespace AfterHours.Shop
[SerializeField] private int _displayColumns = 3; [SerializeField] private int _displayColumns = 3;
[SerializeField] private int _displayRows = 3; [SerializeField] private int _displayRows = 3;
[SerializeField] private Vector3 _displaySpacing = new(0.12f, 0.1f, 0.12f); [SerializeField] private Vector3 _displaySpacing = new(0.12f, 0.1f, 0.12f);
[SerializeField] private Vector3 _displayRotationEuler = Vector3.zero;
// Eine synchronisierte Variable, die den Zustand des Kartons speichert // Eine synchronisierte Variable, die den Zustand des Kartons speichert
private NetworkVariable<bool> istOffen = new NetworkVariable<bool>( private NetworkVariable<bool> istOffen = new NetworkVariable<bool>(
@@ -60,7 +61,7 @@ namespace AfterHours.Shop
private void Awake() private void Awake()
{ {
_carryable = GetComponent<Carryable>(); _carryable = GetComponent<Carryable>();
_packageDisplay = new PackageDisplay(_contentsRoot, _displayColumns, _displayRows, _displaySpacing); _packageDisplay = new PackageDisplay(_contentsRoot, _displayColumns, _displayRows, _displaySpacing, _displayRotationEuler);
// Start-Rotationen (Geschlossen) direkt beim Laden sichern // Start-Rotationen (Geschlossen) direkt beim Laden sichern
if (deckelLinks != null) linksGeschlossen = deckelLinks.localRotation; if (deckelLinks != null) linksGeschlossen = deckelLinks.localRotation;
+4 -2
View File
@@ -17,15 +17,17 @@ namespace AfterHours.Shop
private readonly int _columns; private readonly int _columns;
private readonly int _rows; private readonly int _rows;
private readonly Vector3 _spacing; private readonly Vector3 _spacing;
private readonly Quaternion _rotation;
private readonly List<GameObject> _instances = new(); private readonly List<GameObject> _instances = new();
private GameObject _prefab; private GameObject _prefab;
public PackageDisplay(Transform root, int columns, int rows, Vector3 spacing) public PackageDisplay(Transform root, int columns, int rows, Vector3 spacing, Vector3 rotationEuler = default)
{ {
_root = root; _root = root;
_columns = Mathf.Max(1, columns); _columns = Mathf.Max(1, columns);
_rows = Mathf.Max(1, rows); _rows = Mathf.Max(1, rows);
_spacing = spacing; _spacing = spacing;
_rotation = Quaternion.Euler(rotationEuler);
} }
/// <summary>Baut die Anzeige auf <paramref name="count"/> Instanzen an (gedeckelt bei maxVisible).</summary> /// <summary>Baut die Anzeige auf <paramref name="count"/> Instanzen an (gedeckelt bei maxVisible).</summary>
@@ -47,7 +49,7 @@ namespace AfterHours.Shop
{ {
var instance = Object.Instantiate(_prefab, _root); var instance = Object.Instantiate(_prefab, _root);
instance.transform.localPosition = SlotLocalPosition(_instances.Count); instance.transform.localPosition = SlotLocalPosition(_instances.Count);
instance.transform.localRotation = Quaternion.identity; instance.transform.localRotation = _rotation;
_instances.Add(instance); _instances.Add(instance);
} }
+9 -1
View File
@@ -24,6 +24,7 @@ namespace AfterHours.Shop
[SerializeField] private int _displayColumns = 4; [SerializeField] private int _displayColumns = 4;
[SerializeField] private int _displayRows = 3; [SerializeField] private int _displayRows = 3;
[SerializeField] private Vector3 _displaySpacing = new(0.1f, 0.1f, 0.1f); [SerializeField] private Vector3 _displaySpacing = new(0.1f, 0.1f, 0.1f);
[SerializeField] private Vector3 _displayRotationEuler = Vector3.zero;
private readonly NetworkVariable<int> _productId = new(-1); private readonly NetworkVariable<int> _productId = new(-1);
private readonly NetworkVariable<int> _quantity = new(0); private readonly NetworkVariable<int> _quantity = new(0);
@@ -41,7 +42,7 @@ namespace AfterHours.Shop
private PackageDisplay _packageDisplay; private PackageDisplay _packageDisplay;
private void Awake() => _packageDisplay = new PackageDisplay(_displayRoot, _displayColumns, _displayRows, _displaySpacing); private void Awake() => _packageDisplay = new PackageDisplay(_displayRoot, _displayColumns, _displayRows, _displaySpacing, _displayRotationEuler);
/// <summary>Weltposition des Rasterplatzes mit gegebenem Index Ziel fürs Flug-Visual (siehe PlayerCarry).</summary> /// <summary>Weltposition des Rasterplatzes mit gegebenem Index Ziel fürs Flug-Visual (siehe PlayerCarry).</summary>
public Vector3 GetSlotWorldPosition(int index) public Vector3 GetSlotWorldPosition(int index)
@@ -49,6 +50,13 @@ namespace AfterHours.Shop
return _displayRoot != null ? _displayRoot.TransformPoint(_packageDisplay.SlotLocalPosition(index)) : transform.position; return _displayRoot != null ? _displayRoot.TransformPoint(_packageDisplay.SlotLocalPosition(index)) : transform.position;
} }
/// <summary>Endrotation eines Pakets im Regal muss zur ruhenden Anzeige passen, siehe PlayerCarry.</summary>
public Quaternion GetSlotWorldRotation()
{
Quaternion baseRotation = _displayRoot != null ? _displayRoot.rotation : transform.rotation;
return baseRotation * Quaternion.Euler(_displayRotationEuler);
}
public override void OnNetworkSpawn() public override void OnNetworkSpawn()
{ {
_quantity.OnValueChanged += (_, _) => RefreshVisuals(); _quantity.OnValueChanged += (_, _) => RefreshVisuals();
+108
View File
@@ -0,0 +1,108 @@
# Package-Anzeige einrichten (Karton & Regalfach)
Wie man `PackageDisplay` (Karton-Inhalt, Regal-Bestand) so einstellt, dass
Verpackungen sauber ausgerichtet und ohne Überlappen im Raster liegen.
Betrifft `Lieferkarton.cs` und `ShelfSlot.cs` — beide haben dieselben vier
Inspector-Felder unter „Anzeige-Raster".
## Kurzfassung: ja, das ist alles konfigurierbar
Kein Code nötig. Vier Felder pro Objekt:
| Feld | Bedeutung |
|--------------------------|--------------------------------------------------------------|
| `_displayColumns` | Päckchen pro Reihe (X-Achse im lokalen Raum) |
| `_displayRows` | Reihen pro Lage (Z-Achse), bevor eine neue Lage nach oben beginnt |
| `_displaySpacing` | Abstand zwischen Päckchen-Mittelpunkten (X/Y/Z in Metern) |
| `_displayRotationEuler` | Zusätzliche Rotation (Grad), mit der jedes Päckchen platziert wird |
Die Formel dahinter (`PackageDisplay.SlotLocalPosition`):
```
Lage = Index / (Spalten × Reihen)
Rest = Index % (Spalten × Reihen)
Reihe = Rest / Spalten
Spalte= Rest % Spalten
Position = (Spalte × spacing.x, Lage × spacing.y, Reihe × spacing.z)
```
## Warum die Päckchen "komisch" aussehen
Zwei typische Ursachen — beide liegen am **Prefab selbst**, nicht am Raster-Code:
### 1. Falscher Pivot (Ursprung) im Prefab
`PackageDisplay` setzt `transform.localPosition` direkt auf die berechnete
Rasterposition — **bezogen auf den Ursprung (Pivot) des Prefabs**, nicht auf
seine sichtbare Bounding Box. Sitzt der Pivot z. B. an einer Ecke statt im
Zentrum/am Boden-Mittelpunkt der Verpackung, wirkt die Platzierung „verschoben"
oder die Päckchen scheinen im Boden zu versinken bzw. zu schweben.
**Fix:** Pivot des `PackagePrefab` im 3D-Tool (Blender) auf den Boden-
Mittelpunkt setzen, bevor es exportiert/als Prefab gebaut wird. Faustregel:
wenn's wie eine Kiste auf dem Boden stehen soll, Pivot unten-mittig; wenn's im
Regal frei "schwebend zentriert" wirken soll, Pivot im geometrischen Zentrum.
### 2. Falsche Grundausrichtung im Prefab
Bisher wurde jedes Päckchen mit `Quaternion.identity` platziert — also exakt
so gedreht, wie es importiert wurde. Wurde das Modell in Blender nicht
"aufrecht" (Unity: +Y = oben, +Z = vorne) exportiert, liegen die Päckchen im
Raster auf der Seite oder verdreht.
**Fix jetzt eingebaut:** `_displayRotationEuler` gleicht das aus, ohne das
Modell neu exportieren zu müssen. Einfach im Inspector die nötige Korrektur
eintragen (z. B. `(-90, 0, 0)`, falls das Modell "liegend" exportiert wurde
und eigentlich aufrecht stehen sollte) — Werte am besten per Trial-and-Error
im Play-Mode justieren, man sieht die Wirkung sofort.
## Spacing & Größe aufeinander abstimmen
`_displaySpacing` ist der Abstand zwischen den **Mittelpunkten** benachbarter
Päckchen, keine automatische Kollisionsvermeidung. Zu klein → Päckchen
überlappen sich sichtbar. Zu groß → unnötige Lücken, und es passen weniger
rein als gedacht.
So ermittelst du einen guten Wert:
1. Das `PackagePrefab` per Drag&Drop in eine leere Szene ziehen (oder im
Project-Fenster anklicken und die Bounds im Scene-View-Gizmo ablesen).
2. Größte Kantenlänge in Metern ablesen (Unity: 1 Unit = 1 Meter).
3. `_displaySpacing` je Achse auf **Kantenlänge × ca. 1,11,3** setzen (kleiner
Puffer gegen Berührung/Z-Fighting).
Beispiel: Päckchen ist 0,08 m breit/tief, 0,12 m hoch →
`_displaySpacing ≈ (0.10, 0.14, 0.10)`.
## Spalten/Reihen an die Behälter-Größe anpassen
- **Lieferkarton**: `_displayColumns`/`_displayRows` grob an die
Innenmaße des Kartons anpassen (Spalten × Reihen × Spacing sollte nicht
größer sein als die Kartonöffnung — sonst "schwebt" ein Teil der Päckchen
sichtbar über dem Kartonrand).
- **ShelfSlot**: analog zur `_capacityUnits`/Fachbreite. Aktuell Default
4×3 = 12 Plätze pro Lage, passend zur Standard-`_capacityUnits: 12` bei
`ShelfSize.Small`. Bei größeren Produkten (`Medium`/`Large`, siehe
`ProductDefinition.ShelfSize`) verringert sich die effektive Kapazität
automatisch (`ShelfSlot.Capacity()`) — Raster-Werte ggf. mit anpassen,
damit die sichtbare Anzeige zur tatsächlichen Kapazität passt.
## Troubleshooting
| Symptom | Wahrscheinliche Ursache | Fix |
|--------------------------------------------|---------------------------------------------|-----|
| Päckchen liegen auf der Seite / verdreht | Prefab-Grundausrichtung falsch | `_displayRotationEuler` justieren |
| Päckchen schweben über/versinken im Boden | Pivot des Prefabs nicht am Boden-Mittelpunkt| Pivot in Blender korrigieren, oder `_displaySpacing.y`/Lagenhöhe grob kompensieren |
| Päckchen überlappen sich sichtbar | `_displaySpacing` kleiner als Prefab-Größe | Spacing erhöhen (siehe Formel oben) |
| Zu viele/wenige Päckchen sichtbar | `_maxVisiblePackages` (Karton) bzw. `Capacity()` (Regal) vs. Raster-Kapazität passen nicht zusammen | `_displayColumns × _displayRows` an tatsächliche Kapazität anpassen |
| Fliegendes Päckchen landet anders gedreht als die ruhenden im Regal | War bis eben ein Bug (Flug nutzte rohe Transform-Rotation statt `_displayRotationEuler`) | Bereits gefixt: `ShelfSlot.GetSlotWorldRotation()` berücksichtigt jetzt beide |
## Kurz zusammengefasst
Keine der Zahlen ist "fest verdrahtet" — alle vier Felder sind Inspector-
Werte, extra dafür da, unterschiedliche Produkt-Prefabs ohne Code-Änderung
einzupassen. Der eigentliche Hebel für "richtig ausgerichtet" ist aber meist
der Pivot/die Grundrotation des Prefabs selbst — das Raster kann nur die
*Anordnung*, nicht die *Modellierung* korrigieren (außer über
`_displayRotationEuler` als Ausgleich).