From 2ca0b84519f965925e49b74cd4d2b3ecd7a3beda Mon Sep 17 00:00:00 2001 From: swrring Date: Tue, 15 Sep 2026 15:12:29 +0900 Subject: [PATCH] =?UTF-8?q?[WL-816y]=20=EC=BA=A0=ED=94=84=ED=8C=8C?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=20=EC=84=A4=EC=B9=98=20=EC=9E=90=EB=A6=AC=20?= =?UTF-8?q?=EC=9E=A5=EC=8B=9D=20+=20Arch=5F01=20=EB=8D=98=EC=A0=84=20?= =?UTF-8?q?=ED=8F=AC=ED=83=88=20(#816)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 첫 개방 발판 문구 = 「캠프파이어 설치」 · 지불·세이브 복원 시 그 구역에 캠프 장식 스폰 (WLIslandCampDecor: Fireplace 중앙 1 + Tent 가장자리 2 · 불 쪽 향함 · 콜라이더 off · 바닥 스냅) - 던전 입구 = WL_DungeonGate_Arch(Arch_01 + 아치 중앙 마법 포털 루프) · gatePrefabPath 4행 · 안내 문구 「던전으로 이동하기」 - FantasyForest 원본은 Built-in 셰이더(URP 분홍) — 원본 0줄 수정, WL 쪽 URP 사본 머티리얼 2개로 래핑 - 되돌리기 = campDecorEnabled 0 + gatePrefabPath 비우기 Co-Authored-By: Claude Opus 5 (1M context) --- Assets/WL/Island/Materials.meta | 8 + .../Materials/URP_FantasyForest_Emission2.mat | 138 +++++++ .../URP_FantasyForest_Emission2.mat.meta | 8 + .../Materials/URP_FantasyForest_MAIN.mat | 137 ++++++ .../Materials/URP_FantasyForest_MAIN.mat.meta | 8 + Assets/WL/Island/Prefabs.meta | 8 + .../Island/Prefabs/WL_Camp_Fireplace.prefab | 389 ++++++++++++++++++ .../Prefabs/WL_Camp_Fireplace.prefab.meta | 7 + Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab | 389 ++++++++++++++++++ .../Island/Prefabs/WL_Camp_Tent.prefab.meta | 7 + .../Island/Prefabs/WL_DungeonGate_Arch.prefab | 223 ++++++++++ .../Prefabs/WL_DungeonGate_Arch.prefab.meta | 7 + .../Resources/WL/WLIslandSettings.asset | 24 +- Assets/WL/Island/WLDungeonGate.cs | 9 +- Assets/WL/Island/WLIslandCampDecor.cs | 123 ++++++ Assets/WL/Island/WLIslandCampDecor.cs.meta | 2 + Assets/WL/Island/WLIslandGateFlow.cs | 2 + Assets/WL/Island/WLIslandSettings.cs | 42 ++ 18 files changed, 1524 insertions(+), 7 deletions(-) create mode 100644 Assets/WL/Island/Materials.meta create mode 100644 Assets/WL/Island/Materials/URP_FantasyForest_Emission2.mat create mode 100644 Assets/WL/Island/Materials/URP_FantasyForest_Emission2.mat.meta create mode 100644 Assets/WL/Island/Materials/URP_FantasyForest_MAIN.mat create mode 100644 Assets/WL/Island/Materials/URP_FantasyForest_MAIN.mat.meta create mode 100644 Assets/WL/Island/Prefabs.meta create mode 100644 Assets/WL/Island/Prefabs/WL_Camp_Fireplace.prefab create mode 100644 Assets/WL/Island/Prefabs/WL_Camp_Fireplace.prefab.meta create mode 100644 Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab create mode 100644 Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab.meta create mode 100644 Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab create mode 100644 Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab.meta create mode 100644 Assets/WL/Island/WLIslandCampDecor.cs create mode 100644 Assets/WL/Island/WLIslandCampDecor.cs.meta diff --git a/Assets/WL/Island/Materials.meta b/Assets/WL/Island/Materials.meta new file mode 100644 index 000000000..e159c5697 --- /dev/null +++ b/Assets/WL/Island/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b61508e6c862d944caffc4d6412de85d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Island/Materials/URP_FantasyForest_Emission2.mat b/Assets/WL/Island/Materials/URP_FantasyForest_Emission2.mat new file mode 100644 index 000000000..76172ff06 --- /dev/null +++ b/Assets/WL/Island/Materials/URP_FantasyForest_Emission2.mat @@ -0,0 +1,138 @@ +%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: URP_FantasyForest_Emission2 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 1 + 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: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _XRMotionVectorsPass: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0.038223643, g: 0.2675655, b: 1.3187157, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6675637048861331715 +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 diff --git a/Assets/WL/Island/Materials/URP_FantasyForest_Emission2.mat.meta b/Assets/WL/Island/Materials/URP_FantasyForest_Emission2.mat.meta new file mode 100644 index 000000000..98432dd15 --- /dev/null +++ b/Assets/WL/Island/Materials/URP_FantasyForest_Emission2.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 02e560abea793514b80679bfcf09b726 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Island/Materials/URP_FantasyForest_MAIN.mat b/Assets/WL/Island/Materials/URP_FantasyForest_MAIN.mat new file mode 100644 index 000000000..6a47d11e8 --- /dev/null +++ b/Assets/WL/Island/Materials/URP_FantasyForest_MAIN.mat @@ -0,0 +1,137 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7214392270504262733 +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: URP_FantasyForest_MAIN + 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: 2e4238d79a3ec4545b084898f6c9b3aa, 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: 2e4238d79a3ec4545b084898f6c9b3aa, 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 + - _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 diff --git a/Assets/WL/Island/Materials/URP_FantasyForest_MAIN.mat.meta b/Assets/WL/Island/Materials/URP_FantasyForest_MAIN.mat.meta new file mode 100644 index 000000000..789edf144 --- /dev/null +++ b/Assets/WL/Island/Materials/URP_FantasyForest_MAIN.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9774d61cabc8c44cb467a3b29dbe3b8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Island/Prefabs.meta b/Assets/WL/Island/Prefabs.meta new file mode 100644 index 000000000..5ffec2a3d --- /dev/null +++ b/Assets/WL/Island/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5065518a81ca6bb4f8dfa50148dbdfeb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Island/Prefabs/WL_Camp_Fireplace.prefab b/Assets/WL/Island/Prefabs/WL_Camp_Fireplace.prefab new file mode 100644 index 000000000..597d33851 --- /dev/null +++ b/Assets/WL/Island/Prefabs/WL_Camp_Fireplace.prefab @@ -0,0 +1,389 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &227653289434260357 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5564262542648438162} + - component: {fileID: 4621278454034717006} + - component: {fileID: 484284562060184662} + - component: {fileID: 1421544796812960939} + m_Layer: 0 + m_Name: Fireplace_01_LOD0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5564262542648438162 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 227653289434260357} + 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: 1842110579299727364} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4621278454034717006 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 227653289434260357} + m_Mesh: {fileID: -1520055458040610348, guid: d4d406273b9a65f4bb136ca6b5d2b4c3, type: 3} +--- !u!23 &484284562060184662 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 227653289434260357} + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d9774d61cabc8c44cb467a3b29dbe3b8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &1421544796812960939 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 227653289434260357} + 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: -1520055458040610348, guid: d4d406273b9a65f4bb136ca6b5d2b4c3, type: 3} +--- !u!1 &1358870354479964862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1842110579299727364} + - component: {fileID: 6902437571405057909} + m_Layer: 0 + m_Name: Fireplace_01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1842110579299727364 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1358870354479964862} + 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: 4517000282208340581} + - {fileID: 3269461373518890544} + - {fileID: 5564262542648438162} + m_Father: {fileID: 7304761641342231365} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!205 &6902437571405057909 +LODGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1358870354479964862} + serializedVersion: 2 + m_LocalReferencePoint: {x: 0.02473101, y: 0.011341825, z: -0.009554267} + m_Size: 0.640552 + m_FadeMode: 0 + m_AnimateCrossFading: 0 + m_LastLODIsBillboard: 0 + m_LODs: + - screenRelativeHeight: 0.09594731 + fadeTransitionWidth: 0 + renderers: + - renderer: {fileID: 484284562060184662} + - screenRelativeHeight: 0.026525829 + fadeTransitionWidth: 0 + renderers: + - renderer: {fileID: 1319931818355886429} + - screenRelativeHeight: 0.005327479 + fadeTransitionWidth: 0 + renderers: + - renderer: {fileID: 5142154683525395410} + m_Enabled: 1 +--- !u!1 &3872099057347147201 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7304761641342231365} + m_Layer: 0 + m_Name: WL_Camp_Fireplace + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7304761641342231365 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3872099057347147201} + 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: 1842110579299727364} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6657666872206537073 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4517000282208340581} + - component: {fileID: 956475127312406792} + - component: {fileID: 1319931818355886429} + m_Layer: 0 + m_Name: Fireplace_01_LOD1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4517000282208340581 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6657666872206537073} + 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: 1842110579299727364} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &956475127312406792 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6657666872206537073} + m_Mesh: {fileID: -8826867920739912865, guid: d4d406273b9a65f4bb136ca6b5d2b4c3, type: 3} +--- !u!23 &1319931818355886429 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6657666872206537073} + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d9774d61cabc8c44cb467a3b29dbe3b8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &8216991243451065258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3269461373518890544} + - component: {fileID: 7344323453397214201} + - component: {fileID: 5142154683525395410} + m_Layer: 0 + m_Name: Fireplace_01_LOD2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3269461373518890544 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8216991243451065258} + 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: 1842110579299727364} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7344323453397214201 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8216991243451065258} + m_Mesh: {fileID: -148831446676988567, guid: d4d406273b9a65f4bb136ca6b5d2b4c3, type: 3} +--- !u!23 &5142154683525395410 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8216991243451065258} + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d9774d61cabc8c44cb467a3b29dbe3b8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/WL/Island/Prefabs/WL_Camp_Fireplace.prefab.meta b/Assets/WL/Island/Prefabs/WL_Camp_Fireplace.prefab.meta new file mode 100644 index 000000000..a99775a54 --- /dev/null +++ b/Assets/WL/Island/Prefabs/WL_Camp_Fireplace.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: caee4b4e8d1075c488f4f8faf3c3c47f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab b/Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab new file mode 100644 index 000000000..0629b26eb --- /dev/null +++ b/Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab @@ -0,0 +1,389 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4456709766907585861 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7763827093182791127} + - component: {fileID: 4347224399827137218} + - component: {fileID: 1660284263149127013} + m_Layer: 0 + m_Name: Tent_01_LOD2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7763827093182791127 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4456709766907585861} + 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: 8989633969168189507} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4347224399827137218 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4456709766907585861} + m_Mesh: {fileID: -5193537955655155226, guid: 97b86bed7724fe24b904746fdd0c20aa, type: 3} +--- !u!23 &1660284263149127013 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4456709766907585861} + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d9774d61cabc8c44cb467a3b29dbe3b8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &6604911156552070683 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 252377974076440644} + m_Layer: 0 + m_Name: WL_Camp_Tent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &252377974076440644 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6604911156552070683} + 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: 8989633969168189507} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6920909026590120153 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6464302781299800439} + - component: {fileID: 2098929568197960211} + - component: {fileID: 3224473575748651188} + - component: {fileID: 8884231017820549046} + m_Layer: 0 + m_Name: Tent_01_LOD0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6464302781299800439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6920909026590120153} + 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: 8989633969168189507} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2098929568197960211 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6920909026590120153} + m_Mesh: {fileID: -4432313088884231522, guid: 97b86bed7724fe24b904746fdd0c20aa, type: 3} +--- !u!23 &3224473575748651188 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6920909026590120153} + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d9774d61cabc8c44cb467a3b29dbe3b8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &8884231017820549046 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6920909026590120153} + 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: -4432313088884231522, guid: 97b86bed7724fe24b904746fdd0c20aa, type: 3} +--- !u!1 &7265371972637147506 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3608660979383812669} + - component: {fileID: 2196117858991771665} + - component: {fileID: 3417600420353594046} + m_Layer: 0 + m_Name: Tent_01_LOD1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3608660979383812669 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7265371972637147506} + 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: 8989633969168189507} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2196117858991771665 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7265371972637147506} + m_Mesh: {fileID: -5367640204545253737, guid: 97b86bed7724fe24b904746fdd0c20aa, type: 3} +--- !u!23 &3417600420353594046 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7265371972637147506} + 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_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d9774d61cabc8c44cb467a3b29dbe3b8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &8613777346421215993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8989633969168189507} + - component: {fileID: 4223118463591300914} + m_Layer: 0 + m_Name: Tent_01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8989633969168189507 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8613777346421215993} + 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: 6464302781299800439} + - {fileID: 3608660979383812669} + - {fileID: 7763827093182791127} + m_Father: {fileID: 252377974076440644} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!205 &4223118463591300914 +LODGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8613777346421215993} + serializedVersion: 2 + m_LocalReferencePoint: {x: -0.0000011324883, y: 0.33892444, z: -0.0011657476} + m_Size: 1.0878838 + m_FadeMode: 0 + m_AnimateCrossFading: 0 + m_LastLODIsBillboard: 0 + m_LODs: + - screenRelativeHeight: 0.25 + fadeTransitionWidth: 0 + renderers: + - renderer: {fileID: 3224473575748651188} + - screenRelativeHeight: 0.05534957 + fadeTransitionWidth: 0 + renderers: + - renderer: {fileID: 3417600420353594046} + - screenRelativeHeight: 0.01 + fadeTransitionWidth: 0 + renderers: + - renderer: {fileID: 1660284263149127013} + m_Enabled: 1 diff --git a/Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab.meta b/Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab.meta new file mode 100644 index 000000000..75175af6c --- /dev/null +++ b/Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b5a7cf48de3de79428ec2011c6ce65e0 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab b/Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab new file mode 100644 index 000000000..982887fd6 --- /dev/null +++ b/Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab @@ -0,0 +1,223 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3268879317376371532 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6659972054777293156} + m_Layer: 0 + m_Name: WL_DungeonGate_Arch + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6659972054777293156 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3268879317376371532} + 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: 4277541058609830081} + - {fileID: 1202007421905761968} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &224140029298342439 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 6659972054777293156} + m_Modifications: + - target: {fileID: 1611415559617117846, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: d9774d61cabc8c44cb467a3b29dbe3b8, type: 2} + - target: {fileID: 1611415559617117846, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: 'm_Materials.Array.data[1]' + value: + objectReference: {fileID: 2100000, guid: 02e560abea793514b80679bfcf09b726, type: 2} + - target: {fileID: 3352561804445754333, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3678172515456514140, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_Name + value: Arch_01 + objectReference: {fileID: 0} + - target: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8731643415721170290, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: d9774d61cabc8c44cb467a3b29dbe3b8, type: 2} + - target: {fileID: 8731643415721170290, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + propertyPath: 'm_Materials.Array.data[1]' + value: + objectReference: {fileID: 2100000, guid: 02e560abea793514b80679bfcf09b726, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6cb41f0f637390f4191a45922858fd2a, type: 3} +--- !u!4 &4277541058609830081 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4053431832825537254, guid: 6cb41f0f637390f4191a45922858fd2a, + type: 3} + m_PrefabInstance: {fileID: 224140029298342439} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1636058427932283960 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 6659972054777293156} + m_Modifications: + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalScale.x + value: 0.35 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalScale.y + value: 0.35 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalScale.z + value: 0.35 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.0008568764 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalPosition.y + value: 1.3989933 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.0015277863 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 439682714516546187, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + propertyPath: m_Name + value: PortalFx + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, type: 3} +--- !u!4 &1202007421905761968 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 439682714516546184, guid: 6e2d5c22d6c4c9d4a8ff0ed264bec010, + type: 3} + m_PrefabInstance: {fileID: 1636058427932283960} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab.meta b/Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab.meta new file mode 100644 index 000000000..afed2bd11 --- /dev/null +++ b/Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5ef2143760a670d43bb3aa80aade9f6e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Island/Resources/WL/WLIslandSettings.asset b/Assets/WL/Island/Resources/WL/WLIslandSettings.asset index be3ba3f9a..e9696b3f6 100644 --- a/Assets/WL/Island/Resources/WL/WLIslandSettings.asset +++ b/Assets/WL/Island/Resources/WL/WLIslandSettings.asset @@ -28,7 +28,7 @@ MonoBehaviour: mirrorFiAnimator: 1 fiPlayerModelName: Stickman interactRadius: 3.5 - promptFormat: "{0} \uB4E4\uC5B4\uAC00\uAE30" + promptFormat: "{0}\n\uB358\uC804\uC73C\uB85C \uC774\uB3D9\uD558\uAE30" enterButtonText: "\uB4E4\uC5B4\uAC00\uAE30" enterKey: 101 gateHeight: 3.2 @@ -65,7 +65,7 @@ MonoBehaviour: platformRadius: 1.7 platformColor: {r: 0.92, g: 0.72, b: 0.24, a: 1} platformUseToon: 1 - platformLabelFormat: "\uB358\uC804 \uC5F4\uAE30" + platformLabelFormat: "\uCEA0\uD504\uD30C\uC774\uC5B4 \uC124\uCE58" platformLabelHeight: 2.2 platformTriggerSize: 3.4 platformTriggerHeight: 3 @@ -76,6 +76,18 @@ MonoBehaviour: platformCenterVisibleOnly: 1 platformRequireStepOff: 1 platformStepOffTimeoutSeconds: 120 + campDecorEnabled: 1 + campFirePrefabPath: Assets/WL/Island/Prefabs/WL_Camp_Fireplace.prefab + campTentPrefabPath: Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab + campTentCount: 2 + campTentRadius: 2.6 + campTentUseZone: 1 + campTentZoneScale: 0.85 + campTentStartYaw: 35 + campTentFaceYawOffset: 0 + campFireScale: 1.2 + campTentScale: 1.6 + campDecorSnapToGround: 1 applyStartCoin: 1 startCoin: 10 saveResetToken: 816g-1 @@ -109,7 +121,7 @@ MonoBehaviour: gateYaw: 180 gateScale: 1 gateColor: {r: 0.45, g: 0.32, b: 0.62, a: 1} - gatePrefabPath: + gatePrefabPath: Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab platformUseFarm: 1 platformPosition: {x: 0, y: 0, z: 0} - enabled_: 1 @@ -122,7 +134,7 @@ MonoBehaviour: gateYaw: 0 gateScale: 1 gateColor: {r: 0.28, g: 0.5, b: 0.66, a: 1} - gatePrefabPath: + gatePrefabPath: Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab platformUseFarm: 0 platformPosition: {x: -2, y: 0, z: -2} - enabled_: 1 @@ -135,7 +147,7 @@ MonoBehaviour: gateYaw: 180 gateScale: 1 gateColor: {r: 0.62, g: 0.42, b: 0.24, a: 1} - gatePrefabPath: + gatePrefabPath: Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab platformUseFarm: 0 platformPosition: {x: -2.5, y: 0, z: 8.5} - enabled_: 1 @@ -148,6 +160,6 @@ MonoBehaviour: gateYaw: 0 gateScale: 1 gateColor: {r: 0.55, g: 0.24, b: 0.3, a: 1} - gatePrefabPath: + gatePrefabPath: Assets/WL/Island/Prefabs/WL_DungeonGate_Arch.prefab platformUseFarm: 0 platformPosition: {x: 6, y: 0, z: -2} diff --git a/Assets/WL/Island/WLDungeonGate.cs b/Assets/WL/Island/WLDungeonGate.cs index e7b487be0..2c0cd3dd5 100644 --- a/Assets/WL/Island/WLDungeonGate.cs +++ b/Assets/WL/Island/WLDungeonGate.cs @@ -44,7 +44,14 @@ namespace WL.Island if (!string.IsNullOrEmpty(d.gatePrefabPath)) { var prefab = WLIslandAssets.LoadPrefab(d.gatePrefabPath); - if (prefab != null) root = Object.Instantiate(prefab); + if (prefab != null) + { + root = Object.Instantiate(prefab); + float gs = d.gateScale <= 0f ? 1f : d.gateScale; + root.transform.localScale = prefab.transform.localScale * gs; + // WL-816y — 프리팹 입구도 이름표를 단다(더미에만 있던 것 · 위치는 값 gateHeight·gateScale) + WLIslandLabel.Attach(root.transform, new Vector3(0f, cfg.gateHeight * gs * 1.15f, 0f), d.displayName); + } } if (root == null) root = BuildDummy(cfg, d); diff --git a/Assets/WL/Island/WLIslandCampDecor.cs b/Assets/WL/Island/WLIslandCampDecor.cs new file mode 100644 index 000000000..1834a72e3 --- /dev/null +++ b/Assets/WL/Island/WLIslandCampDecor.cs @@ -0,0 +1,123 @@ +// ───────────────────────────────────────────────────────────────────────────── +// WLIslandCampDecor.cs — WL-816y 「캠프파이어 설치」 +// +// PD 원문(2026-09-15) 「게임 시작 후 처음 골드로 지역을 개방하는 위치에 "캠프파이어 설치"로 명명하고, +// "Fireplace_01" 에셋의 캠프파이어를 중앙에 배치하고, 가장자리에 "Tent_01" 텐트를 배치해 +// 자연스럽게 캠프파이어를 차린 것처럼 꾸며줘」 +// +// ■ 자리 = 첫 발판이 서 있던 자리(= 「열림 구역」 정중앙 · WLIslandGateFlow.PlatformPosFor(cfg, 0)). +// 값을 치르면 발판은 영영 사라지고(816g) 그 자리에 이 캠프가 남는다. +// ■ 세이브 복원 = 섬이 준비될 때 해금 수(WL_Island_DungeonsUnlocked) ≥ 1 이면 다시 놓는다. +// ■ 장식은 **콜라이더를 전부 끈다** — 이동 방해 0 · NavMesh 재베이크 없음(816g 더미와 같은 원칙). +// ■ 값(프리팹 경로·개수·거리·회전·스케일·바닥 스냅)은 전부 `WLIslandSettings` 에 있다(C45). +// 🔴 원본 에셋(Assets/FantasyForest/**)은 한 줄도 고치지 않는다 — 인스턴스만 만든다. +// 🔴 Debug.LogError / Debug.LogException 을 쓰지 않는다. +// ───────────────────────────────────────────────────────────────────────────── + +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace WL.Island +{ + public static class WLIslandCampDecor + { + const string RootName = "~WL_CampDecor"; + + static readonly List s_made = new List(4); + + /// 진단 — 마지막으로 놓은 장식 수·중심. + public static int DecorSpawned; + public static Vector3 LastCenter; + public static string LastLog = ""; + + /// 지금 해금 상태에 맞게 캠프 장식을 놓거나 지운다(섬 준비 직후 · 지불 직후 둘 다 여기로). + public static void Refresh(WLIslandSettings cfg, Scene scene) + { + Clear(); + if (cfg == null || cfg.campDecorEnabled == 0) return; + if (WLIslandGateFlow.UnlockedCount(cfg) < 1) { LastLog = "캠프 없음 — 첫 자리 미개방"; return; } + + Vector3 center = WLIslandGateFlow.PlatformPosFor(cfg, 0); + LastCenter = center; + + var root = new GameObject(RootName); + root.transform.position = center; + if (scene.IsValid() && scene.isLoaded) SceneManager.MoveGameObjectToScene(root, scene); + s_made.Add(root); + + int n = 0; + + // ① 모닥불 = 구역 중앙 + var fire = Spawn(cfg, cfg.campFirePrefabPath, root.transform, center, 0f, cfg.campFireScale, "Fire"); + if (fire != null) n++; + + // ② 텐트 = 구역 가장자리 · 불 쪽을 향하게 + float r = TentRadius(cfg); + int tents = Mathf.Max(0, cfg.campTentCount); + for (int i = 0; i < tents; i++) + { + float yaw = cfg.campTentStartYaw + (tents > 0 ? 360f / tents * i : 0f); + float rad = yaw * Mathf.Deg2Rad; + Vector3 p = center + new Vector3(Mathf.Sin(rad) * r, 0f, Mathf.Cos(rad) * r); + // 텐트가 중앙(불)을 바라보도록 = 바깥 방향의 반대 + float faceYaw = yaw + 180f + cfg.campTentFaceYawOffset; + if (Spawn(cfg, cfg.campTentPrefabPath, root.transform, p, faceYaw, cfg.campTentScale, "Tent_" + i) != null) n++; + } + + DecorSpawned = n; + LastLog = "캠프 장식 " + n + "개 — 중심 " + center.ToString("F2") + " · 텐트 거리 " + r.ToString("F2"); + WLIslandBridge.Log(cfg, LastLog); + } + + /// 텐트 거리 — 「열림 구역」이 있으면 그 짧은 쪽 반지름(= 가장자리), 없으면 설정값. + static float TentRadius(WLIslandSettings cfg) + { + float r = cfg.campTentRadius; + if (cfg.campTentUseZone != 0 && WLIslandGateFlow.ZoneBoundsValid) + { + var e = WLIslandGateFlow.ZoneBounds.extents; + float zr = Mathf.Min(e.x, e.z) * cfg.campTentZoneScale; + if (zr > 0.01f) r = zr; + } + return Mathf.Max(0.01f, r); + } + + static GameObject Spawn(WLIslandSettings cfg, string path, Transform parent, Vector3 pos, float yaw, float scale, string name) + { + if (string.IsNullOrEmpty(path)) return null; + var prefab = WLIslandAssets.LoadPrefab(path); + if (prefab == null) { WLIslandBridge.Log(cfg, "캠프 장식 프리팹 없음 — " + path); return null; } + + var go = Object.Instantiate(prefab); + go.name = "~WL_Camp_" + name; + go.transform.SetParent(parent, false); + go.transform.position = Snap(cfg, pos); + go.transform.rotation = Quaternion.Euler(0f, yaw, 0f); + float s = scale > 0.001f ? scale : 1f; + go.transform.localScale = prefab.transform.localScale * s; + + var cols = go.GetComponentsInChildren(true); + for (int i = 0; i < cols.Length; i++) if (cols[i] != null) cols[i].enabled = false; + + return go; + } + + static Vector3 Snap(WLIslandSettings cfg, Vector3 p) + { + if (cfg.campDecorSnapToGround == 0) return p; + RaycastHit hit; + if (Physics.Raycast(new Vector3(p.x, p.y + 30f, p.z), Vector3.down, out hit, 60f, ~0, QueryTriggerInteraction.Ignore)) + return new Vector3(p.x, hit.point.y, p.z); + return p; + } + + public static void Clear() + { + for (int i = 0; i < s_made.Count; i++) + if (s_made[i] != null) Object.Destroy(s_made[i]); + s_made.Clear(); + DecorSpawned = 0; + } + } +} diff --git a/Assets/WL/Island/WLIslandCampDecor.cs.meta b/Assets/WL/Island/WLIslandCampDecor.cs.meta new file mode 100644 index 000000000..419ea9a7a --- /dev/null +++ b/Assets/WL/Island/WLIslandCampDecor.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c50d7385dc9c5334683cdb068a5f7d40 \ No newline at end of file diff --git a/Assets/WL/Island/WLIslandGateFlow.cs b/Assets/WL/Island/WLIslandGateFlow.cs index e116c660a..d31a5f914 100644 --- a/Assets/WL/Island/WLIslandGateFlow.cs +++ b/Assets/WL/Island/WLIslandGateFlow.cs @@ -94,6 +94,7 @@ namespace WL.Island s_haveFarm = haveFarm; RefreshPlatform(cfg, scene); + WLIslandCampDecor.Refresh(cfg, scene); // WL-816y — 세이브 복원(해금 ≥ 1 이면 캠프 재생성) } static Vector3 s_farmCenter; @@ -216,6 +217,7 @@ namespace WL.Island WLIslandBridge.Log(cfg, LastLog); RefreshPlatform(cfg, scene); + WLIslandCampDecor.Refresh(cfg, scene); // WL-816y — 값을 치른 그 자리에 캠프가 남는다 } public static WLDungeonDef NthEnabled(WLIslandSettings cfg, int n) diff --git a/Assets/WL/Island/WLIslandSettings.cs b/Assets/WL/Island/WLIslandSettings.cs index 91a842cd5..70bbff63b 100644 --- a/Assets/WL/Island/WLIslandSettings.cs +++ b/Assets/WL/Island/WLIslandSettings.cs @@ -319,6 +319,48 @@ namespace WL.Island [Tooltip("위 대기의 상한(초). 넘으면 그냥 놓는다.")] public float platformStepOffTimeoutSeconds = 120f; + // ── WL-816y (2026-09-15 PD) 「처음 골드로 지역을 개방하는 위치에 "캠프파이어 설치"로 명명하고, + // "Fireplace_01" 캠프파이어를 중앙에, 가장자리에 "Tent_01" 텐트를 배치해 캠프를 차린 것처럼」 + [Header("캠프 장식 (WL-816y · 첫 개방 자리)")] + [Tooltip("🔴 WL-816y — 1 이면 첫 자리(던전 1 발판 자리)를 열었을 때 캠프 장식을 놓는다. " + + "**되돌리기 = 0**. 장식은 콜라이더를 전부 끈다(이동 방해 0 · NavMesh 재베이크 없음).")] + public int campDecorEnabled = 1; + + [Tooltip("구역 중앙에 놓을 모닥불 프리팹 경로(비우면 모닥불 없음). " + + "🔴 FantasyForest 원본은 Built-in(Standard) 셰이더라 URP 에서 분홍으로 나온다 — " + + "원본을 고치지 않고 WL 쪽 URP 사본 머티리얼을 물린 래퍼 프리팹을 쓴다(WL-816y).")] + public string campFirePrefabPath = "Assets/WL/Island/Prefabs/WL_Camp_Fireplace.prefab"; + + [Tooltip("구역 가장자리에 놓을 텐트 프리팹 경로(비우면 텐트 없음 · 위와 같은 이유로 WL 래퍼).")] + public string campTentPrefabPath = "Assets/WL/Island/Prefabs/WL_Camp_Tent.prefab"; + + [Tooltip("텐트 개수(PD: 2개).")] + public int campTentCount = 2; + + [Tooltip("모닥불 중심에서 텐트까지의 거리(m). campTentUseZone = 1 이면 구역 반경이 우선한다.")] + public float campTentRadius = 2.6f; + + [Tooltip("1 이면 텐트 거리를 「열림 구역」 바운즈의 짧은 쪽 반지름 × campTentZoneScale 로 잡는다(= 가장자리).")] + public int campTentUseZone = 1; + + [Tooltip("위 구역 반지름에 곱하는 값(1 = 구역 경계선 · 0.85 = 살짝 안쪽).")] + public float campTentZoneScale = 0.85f; + + [Tooltip("첫 텐트의 방위각(도 · 0 = +Z). 나머지는 360/개수 만큼 돌아가며 선다.")] + public float campTentStartYaw = 35f; + + [Tooltip("텐트가 불을 바라보는 각도 보정(도). 텐트 프리팹의 정면이 -Z 면 180 을 넣는다.")] + public float campTentFaceYawOffset; + + [Tooltip("모닥불 인스턴스 스케일 배수(원본 지름 ≈ 0.9 m · 섬 캐릭터 1.19 m 기준).")] + public float campFireScale = 1.2f; + + [Tooltip("텐트 인스턴스 스케일 배수(원본 0.78 × 0.69 × 1.09 m — 캐릭터 1.19 m 옆에서는 작다 · 2.0 ≈ 높이 1.38 m).")] + public float campTentScale = 1.6f; + + [Tooltip("1 이면 장식 하나하나를 위에서 아래로 쏘아 지면 높이에 맞춘다.")] + public int campDecorSnapToGround = 1; + [Header("시작 골드 (PD: 초기 10 골드)")] [Tooltip("1 이면 **새 게임**의 시작 골드를 아래 값으로 바꾼다(FI 기본값 500 · IslandManager.cs:30).")] public int applyStartCoin = 1;