Add maze generation visualization with 2-phase animation
Enhance maze generation animation system with visual feedback during algorithm execution and a two-phase rendering approach: - Phase 1: Preview mode displays simple blocks while algorithms run, with real-time feedback for path checking (valid/invalid/evaluating states) - Phase 2: Sweep 3D modular pieces into place with pop-in animations Updates: - New MazeCellHighlight states (EvaluatingValid, EvaluatingInvalid) for algorithm feedback - Modified all maze algorithms (DFS, Kruskal's, Prim's) to emit visual feedback when checking adjacent cells - New animation components: HighlightLinger (self-destruct highlights) and PopInAnimation (juicy pop-in effect) - Refactored MazeReworkSpawner to support preview prefabs and track spawned object state - New prefabs: Stair room and MazeVisualize variants - Added stepDelay and isPreviewMode controls to MazeAnimator for flexible pacing - Reduced default maze size and adjusted material colors for testing
This commit is contained in:
20
.idea/.idea.BABA_YAGA/.idea/workspace.xml
generated
20
.idea/.idea.BABA_YAGA/.idea/workspace.xml
generated
@@ -12,16 +12,16 @@
|
|||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="d308d1cb-09fc-4331-ba20-00f7b43d1576" name="Changes" comment="">
|
<list default="true" id="d308d1cb-09fc-4331-ba20-00f7b43d1576" name="Changes" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.BABA_YAGA/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.BABA_YAGA/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/.idea.BABA_YAGA/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.BABA_YAGA/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Materials/Red.mat" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Materials/Red.mat" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Materials/Red 1.mat" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Materials/Red 1.mat" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Materials/Separator.mat" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Materials/Red 2.mat" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Materials/Red 2.mat" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Materials/Separator.mat.meta" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Prefabs/Environment/Hall/MazeVisualize.prefab" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Prefabs/Environment/Hall/MazeVisualize.prefab" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Materials/Transparency.mat" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Presets/MazeRework.asset" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Presets/MazeRework.asset" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Materials/Transparency.mat.meta" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Algorithms/DFSIterative.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Algorithms/DFSIterative.cs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Prefabs/Environment/Hall/MazeRework.asset" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Algorithms/DFSRecursive.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Algorithms/DFSRecursive.cs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Prefabs/Environment/Hall/MazeRework.asset.meta" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Algorithms/Kruskals.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Algorithms/Kruskals.cs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/MazeReworkConfig.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/MazeReworkConfig.cs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Algorithms/Prims.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Algorithms/Prims.cs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/MazeReworkGenerator.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/MazeReworkGenerator.cs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Animation/MazeAnimator.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Animation/MazeAnimator.cs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/MazeReworkManager.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/MazeReworkManager.cs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Animation/MazeCellHighlight.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/Animation/MazeCellHighlight.cs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/MazeReworkSpawner.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/MazeReworkSpawner.cs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/MazeReworkSpawner.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Assets/Scripts/Baba_yaga/GameSetup/MazeRework/MazeReworkSpawner.cs" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
|||||||
@@ -125,9 +125,9 @@ Material:
|
|||||||
- _XRMotionVectorsPass: 1
|
- _XRMotionVectorsPass: 1
|
||||||
- _ZWrite: 0
|
- _ZWrite: 0
|
||||||
m_Colors:
|
m_Colors:
|
||||||
- _BaseColor: {r: 1, g: 0, b: 0, a: 0.54509807}
|
- _BaseColor: {r: 0, g: 0.11066675, b: 1, a: 0.54509807}
|
||||||
- _Color: {r: 1, g: 0, b: 0, a: 0.54509807}
|
- _Color: {r: 0, g: 0.11066675, b: 1, a: 0.54509807}
|
||||||
- _EmissionColor: {r: 0.4433962, g: 0, b: 0.035386458, a: 1}
|
- _EmissionColor: {r: 0.4131395, g: 0, b: 0.6886792, a: 1}
|
||||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||||
m_BuildTextureStacks: []
|
m_BuildTextureStacks: []
|
||||||
m_AllowLocking: 1
|
m_AllowLocking: 1
|
||||||
|
|||||||
@@ -125,8 +125,8 @@ Material:
|
|||||||
- _XRMotionVectorsPass: 1
|
- _XRMotionVectorsPass: 1
|
||||||
- _ZWrite: 0
|
- _ZWrite: 0
|
||||||
m_Colors:
|
m_Colors:
|
||||||
- _BaseColor: {r: 1, g: 0, b: 0, a: 0.54509807}
|
- _BaseColor: {r: 0, g: 1, b: 0.981899, a: 0.54509807}
|
||||||
- _Color: {r: 1, g: 0, b: 0, a: 0.54509807}
|
- _Color: {r: 0, g: 1, b: 0.981899, a: 0.54509807}
|
||||||
- _EmissionColor: {r: 0.4433962, g: 0, b: 0.035386458, a: 1}
|
- _EmissionColor: {r: 0.4433962, g: 0, b: 0.035386458, a: 1}
|
||||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||||
m_BuildTextureStacks: []
|
m_BuildTextureStacks: []
|
||||||
|
|||||||
146
Assets/Materials/Red 3.mat
Normal file
146
Assets/Materials/Red 3.mat
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
%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: Red 3
|
||||||
|
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords:
|
||||||
|
- _ALPHAPREMULTIPLY_ON
|
||||||
|
- _EMISSION
|
||||||
|
- _ENVIRONMENTREFLECTIONS_OFF
|
||||||
|
- _SURFACE_TYPE_TRANSPARENT
|
||||||
|
m_InvalidKeywords:
|
||||||
|
- _GLOSSYREFLECTIONS_OFF
|
||||||
|
m_LightmapFlags: 1
|
||||||
|
m_EnableInstancingVariants: 1
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: 3000
|
||||||
|
stringTagMap:
|
||||||
|
RenderType: Transparent
|
||||||
|
disabledShaderPasses:
|
||||||
|
- MOTIONVECTORS
|
||||||
|
- DepthOnly
|
||||||
|
- SHADOWCASTER
|
||||||
|
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: 10
|
||||||
|
- _DstBlendAlpha: 10
|
||||||
|
- _EnvironmentReflections: 0
|
||||||
|
- _GlossMapScale: 0
|
||||||
|
- _Glossiness: 0
|
||||||
|
- _GlossyReflections: 0
|
||||||
|
- _Metallic: 1
|
||||||
|
- _Mode: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.005
|
||||||
|
- _QueueOffset: 0
|
||||||
|
- _ReceiveShadows: 1
|
||||||
|
- _Smoothness: 0.485
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _SrcBlendAlpha: 1
|
||||||
|
- _Surface: 1
|
||||||
|
- _UVSec: 0
|
||||||
|
- _WorkflowMode: 1
|
||||||
|
- _XRMotionVectorsPass: 1
|
||||||
|
- _ZWrite: 0
|
||||||
|
m_Colors:
|
||||||
|
- _BaseColor: {r: 0, g: 0, b: 0, a: 0.54509807}
|
||||||
|
- _Color: {r: 0, g: 0, b: 0, a: 0.54509807}
|
||||||
|
- _EmissionColor: {r: 0.38679248, g: 0.38679248, b: 0.38679248, a: 1}
|
||||||
|
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
|
m_AllowLocking: 1
|
||||||
|
--- !u!114 &4579113440628220621
|
||||||
|
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
Assets/Materials/Red 3.mat.meta
Normal file
8
Assets/Materials/Red 3.mat.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4f17acdef989a4d4fa161356b68eba35
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
146
Assets/Materials/Red 4.mat
Normal file
146
Assets/Materials/Red 4.mat
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
%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: Red 4
|
||||||
|
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords:
|
||||||
|
- _ALPHAPREMULTIPLY_ON
|
||||||
|
- _EMISSION
|
||||||
|
- _ENVIRONMENTREFLECTIONS_OFF
|
||||||
|
- _SURFACE_TYPE_TRANSPARENT
|
||||||
|
m_InvalidKeywords:
|
||||||
|
- _GLOSSYREFLECTIONS_OFF
|
||||||
|
m_LightmapFlags: 1
|
||||||
|
m_EnableInstancingVariants: 1
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: 3000
|
||||||
|
stringTagMap:
|
||||||
|
RenderType: Transparent
|
||||||
|
disabledShaderPasses:
|
||||||
|
- MOTIONVECTORS
|
||||||
|
- DepthOnly
|
||||||
|
- SHADOWCASTER
|
||||||
|
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: 10
|
||||||
|
- _DstBlendAlpha: 10
|
||||||
|
- _EnvironmentReflections: 0
|
||||||
|
- _GlossMapScale: 0
|
||||||
|
- _Glossiness: 0
|
||||||
|
- _GlossyReflections: 0
|
||||||
|
- _Metallic: 1
|
||||||
|
- _Mode: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.005
|
||||||
|
- _QueueOffset: 0
|
||||||
|
- _ReceiveShadows: 1
|
||||||
|
- _Smoothness: 0.485
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _SrcBlendAlpha: 1
|
||||||
|
- _Surface: 1
|
||||||
|
- _UVSec: 0
|
||||||
|
- _WorkflowMode: 1
|
||||||
|
- _XRMotionVectorsPass: 1
|
||||||
|
- _ZWrite: 0
|
||||||
|
m_Colors:
|
||||||
|
- _BaseColor: {r: 0, g: 0, b: 0, a: 0.54509807}
|
||||||
|
- _Color: {r: 0, g: 0, b: 0, a: 0.54509807}
|
||||||
|
- _EmissionColor: {r: 0.38679248, g: 0.38679248, b: 0.38679248, a: 1}
|
||||||
|
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
|
m_AllowLocking: 1
|
||||||
|
--- !u!114 &4579113440628220621
|
||||||
|
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
Assets/Materials/Red 4.mat.meta
Normal file
8
Assets/Materials/Red 4.mat.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b744dec6d360a4c4cbeb2fd16000bf53
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
63
Assets/Prefabs/Environment/Hall/MazeVisualize 1 1 1 1.prefab
Normal file
63
Assets/Prefabs/Environment/Hall/MazeVisualize 1 1 1 1.prefab
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1001 &5190178037283309069
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 4040231326986631665, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: MazeVisualize 1 1 1 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8269670262406082667, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8269670262406082667, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8269670262406082667, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8269670262406082667, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8269670262406082667, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8269670262406082667, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8269670262406082667, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8269670262406082667, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8269670262406082667, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8269670262406082667, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8340010703106068095, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
|
propertyPath: 'm_Materials.Array.data[0]'
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 2100000, guid: b744dec6d360a4c4cbeb2fd16000bf53, type: 2}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: dbc41620be31d434784e8df8019f7c2d, type: 3}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cbacd462ff8b59647b1ab66ee481e934
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
63
Assets/Prefabs/Environment/Hall/MazeVisualize 1 1 1.prefab
Normal file
63
Assets/Prefabs/Environment/Hall/MazeVisualize 1 1 1.prefab
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1001 &2921409242878097755
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1196592758819373226, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: MazeVisualize 1 1 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6505778898445912368, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6505778898445912368, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6505778898445912368, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6505778898445912368, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6505778898445912368, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6505778898445912368, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6505778898445912368, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6505778898445912368, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6505778898445912368, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6505778898445912368, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6572798831050454820, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
|
propertyPath: 'm_Materials.Array.data[0]'
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 2100000, guid: 4f17acdef989a4d4fa161356b68eba35, type: 2}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: c39adeeb3a17d824392cc018d65aedc4, type: 3}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dbc41620be31d434784e8df8019f7c2d
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -29,8 +29,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: 111.06352, y: 0.99998, z: 75.67667}
|
m_LocalPosition: {x: 111.06352, y: 0.99998, z: 75.67667}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 10, y: 10, z: 10}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 1
|
||||||
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}
|
||||||
|
|||||||
537
Assets/Prefabs/Environment/Room/Stair.prefab
Normal file
537
Assets/Prefabs/Environment/Room/Stair.prefab
Normal file
@@ -0,0 +1,537 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &2383264816881362551
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8521218631316099782}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Stair
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &8521218631316099782
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2383264816881362551}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 10, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 6585433336921459774}
|
||||||
|
- {fileID: 6728499501122324840}
|
||||||
|
- {fileID: 6695044693128229310}
|
||||||
|
- {fileID: 1296404904404948790}
|
||||||
|
- {fileID: 5634841085249260666}
|
||||||
|
- {fileID: 3598916540148757750}
|
||||||
|
- {fileID: 3173910591291584886}
|
||||||
|
- {fileID: 3627430670674956908}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1001 &1293495628175984358
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8521218631316099782}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1337696514625810, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: RoomCeilingQuad (1)
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
--- !u!4 &1296404904404948790 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 1293495628175984358}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &3177995410589301080
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8521218631316099782}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1065132372655742, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: Stairway
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
--- !u!4 &3173910591291584886 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 4924854972696622, guid: d3104e1e5a1804b4e9c5bf49a3efcf3b, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 3177995410589301080}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &3602670285734208806
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8521218631316099782}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1337696514625810, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: RoomCeilingQuad (3)
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: -2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: -2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
--- !u!4 &3598916540148757750 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 3602670285734208806}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &3623107311644654684
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8521218631316099782}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1561424320279774, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: StairwayStairFloor
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
--- !u!4 &3627430670674956908 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 4754420235710000, guid: a2d757d95f28c96438144ba63052c201, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 3623107311644654684}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &5637468877100015018
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8521218631316099782}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1337696514625810, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: RoomCeilingQuad (2)
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: -2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
--- !u!4 &5634841085249260666 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 5637468877100015018}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &6589926656748658800
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8521218631316099782}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1811263594973386, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: RoomCeilingQuadWithLight
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: -2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 0.70710677
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0.7071068
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 90
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
--- !u!4 &6585433336921459774 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 6589926656748658800}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &6694382742523043950
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8521218631316099782}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1337696514625810, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: RoomCeilingQuad
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: -2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
--- !u!4 &6695044693128229310 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 4127635367186896, guid: c2d5177496a74d742a60db11d5a6bc45, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 6694382742523043950}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &6732979841283630374
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8521218631316099782}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1811263594973386, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: RoomCeilingQuadWithLight (1)
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
--- !u!4 &6728499501122324840 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 4565015719423054, guid: 00bce47c2b02a1e49928328f8a27c7cd, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 6732979841283630374}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
7
Assets/Prefabs/Environment/Room/Stair.prefab.meta
Normal file
7
Assets/Prefabs/Environment/Room/Stair.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4068079ff983733439d9bdddff56ea18
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -13,8 +13,8 @@ MonoBehaviour:
|
|||||||
m_Name: MazeRework
|
m_Name: MazeRework
|
||||||
m_EditorClassIdentifier: Assembly-CSharp::Baba_yaga.GameSetup.MazeRework.MazeReworkConfig
|
m_EditorClassIdentifier: Assembly-CSharp::Baba_yaga.GameSetup.MazeRework.MazeReworkConfig
|
||||||
algorithm: 3
|
algorithm: 3
|
||||||
width: 21
|
width: 10
|
||||||
depth: 21
|
depth: 10
|
||||||
useRandomSeed: 1
|
useRandomSeed: 1
|
||||||
seed: 1337
|
seed: 1337
|
||||||
startLocation: {x: 1, y: 1}
|
startLocation: {x: 1, y: 1}
|
||||||
@@ -22,5 +22,5 @@ MonoBehaviour:
|
|||||||
roomCount: 378
|
roomCount: 378
|
||||||
minRoomSize: {x: 3, y: 3}
|
minRoomSize: {x: 3, y: 3}
|
||||||
maxRoomSize: {x: 5, y: 5}
|
maxRoomSize: {x: 5, y: 5}
|
||||||
extraRoomDoorChance: 0.3
|
extraRoomDoorChance: 1
|
||||||
loopChance: 0.1
|
loopChance: 0.1
|
||||||
|
|||||||
@@ -29,8 +29,28 @@ namespace Baba_yaga.GameSetup.MazeRework.Algorithms
|
|||||||
{
|
{
|
||||||
int nx = current.x + dx[i];
|
int nx = current.x + dx[i];
|
||||||
int nz = current.y + dz[i];
|
int nz = current.y + dz[i];
|
||||||
if (nx > 0 && nx < width - 1 && nz > 0 && nz < depth - 1 && !visited[nx, nz])
|
int wx = current.x + dx[i] / 2;
|
||||||
candidates.Add(i);
|
int wz = current.y + dz[i] / 2;
|
||||||
|
|
||||||
|
if (nx > 0 && nx < width - 1 && nz > 0 && nz < depth - 1)
|
||||||
|
{
|
||||||
|
if (!visited[nx, nz])
|
||||||
|
{
|
||||||
|
candidates.Add(i);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Checked a visited cell
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.EvaluatingInvalid);
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.None);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Checked out of bounds
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.EvaluatingInvalid);
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.None);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (candidates.Count > 0)
|
if (candidates.Count > 0)
|
||||||
@@ -46,6 +66,10 @@ namespace Baba_yaga.GameSetup.MazeRework.Algorithms
|
|||||||
visited[wx, wz] = true;
|
visited[wx, wz] = true;
|
||||||
visited[nx2, nz2] = true;
|
visited[nx2, nz2] = true;
|
||||||
|
|
||||||
|
// Show valid pick
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.EvaluatingValid);
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.None);
|
||||||
|
|
||||||
// Move head off current cell
|
// Move head off current cell
|
||||||
onCellChanged?.Invoke(current.x, current.y, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.None);
|
onCellChanged?.Invoke(current.x, current.y, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.None);
|
||||||
|
|
||||||
|
|||||||
@@ -38,25 +38,44 @@ namespace Baba_yaga.GameSetup.MazeRework.Algorithms
|
|||||||
int wx = cx + dx[order[i]] / 2;
|
int wx = cx + dx[order[i]] / 2;
|
||||||
int wz = cz + dz[order[i]] / 2;
|
int wz = cz + dz[order[i]] / 2;
|
||||||
|
|
||||||
if (nx > 0 && nx < width - 1 && nz > 0 && nz < depth - 1 && !visited[nx, nz])
|
if (nx > 0 && nx < width - 1 && nz > 0 && nz < depth - 1)
|
||||||
{
|
{
|
||||||
grid[wx, wz] = MazeReworkCellType.Corridor;
|
if (!visited[nx, nz])
|
||||||
grid[nx, nz] = MazeReworkCellType.Corridor;
|
{
|
||||||
visited[wx, wz] = true;
|
// Valid path found! Show valid check
|
||||||
visited[nx, nz] = true;
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.EvaluatingValid);
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.None);
|
||||||
|
|
||||||
// Move head off current cell
|
grid[wx, wz] = MazeReworkCellType.Corridor;
|
||||||
onCellChanged?.Invoke(cx, cz, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.None);
|
grid[nx, nz] = MazeReworkCellType.Corridor;
|
||||||
|
visited[wx, wz] = true;
|
||||||
|
visited[nx, nz] = true;
|
||||||
|
|
||||||
// Show intermediate wall breaking with head
|
// Move head off current cell
|
||||||
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.SearchHead);
|
onCellChanged?.Invoke(cx, cz, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.None);
|
||||||
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.None);
|
|
||||||
|
|
||||||
CarveFrom(nx, nz, grid, visited, rng, width, depth, onCellChanged);
|
// Show intermediate wall breaking with head
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.SearchHead);
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.None);
|
||||||
|
|
||||||
// Clear head from the child cell and restore it here
|
CarveFrom(nx, nz, grid, visited, rng, width, depth, onCellChanged);
|
||||||
onCellChanged?.Invoke(nx, nz, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.None);
|
|
||||||
onCellChanged?.Invoke(cx, cz, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.SearchHead);
|
// Clear head from the child cell and restore it here
|
||||||
|
onCellChanged?.Invoke(nx, nz, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.None);
|
||||||
|
onCellChanged?.Invoke(cx, cz, MazeReworkCellType.Corridor, Animation.MazeCellHighlight.SearchHead);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Invalid path (already visited)
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.EvaluatingInvalid);
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.None);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Invalid path (out of bounds)
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.EvaluatingInvalid);
|
||||||
|
onCellChanged?.Invoke(wx, wz, MazeReworkCellType.Wall, Animation.MazeCellHighlight.None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,9 +49,13 @@ namespace Baba_yaga.GameSetup.MazeRework.Algorithms
|
|||||||
|
|
||||||
// Show evaluating highlight
|
// Show evaluating highlight
|
||||||
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.Evaluating);
|
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.Evaluating);
|
||||||
|
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.None);
|
||||||
|
|
||||||
if (uf.Find(cellId[ax, az]) != uf.Find(cellId[bx, bz]))
|
if (uf.Find(cellId[ax, az]) != uf.Find(cellId[bx, bz]))
|
||||||
{
|
{
|
||||||
|
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.EvaluatingValid);
|
||||||
|
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.None);
|
||||||
|
|
||||||
grid[wx, wz] = MazeReworkCellType.Corridor;
|
grid[wx, wz] = MazeReworkCellType.Corridor;
|
||||||
grid[ax, az] = MazeReworkCellType.Corridor;
|
grid[ax, az] = MazeReworkCellType.Corridor;
|
||||||
grid[bx, bz] = MazeReworkCellType.Corridor;
|
grid[bx, bz] = MazeReworkCellType.Corridor;
|
||||||
@@ -65,7 +69,8 @@ namespace Baba_yaga.GameSetup.MazeRework.Algorithms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Clear evaluate highlight
|
// Invalid
|
||||||
|
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.EvaluatingInvalid);
|
||||||
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.None);
|
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,11 +31,17 @@ namespace Baba_yaga.GameSetup.MazeRework.Algorithms
|
|||||||
|
|
||||||
if (visited[nx, nz])
|
if (visited[nx, nz])
|
||||||
{
|
{
|
||||||
|
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.EvaluatingInvalid);
|
||||||
|
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.None);
|
||||||
|
|
||||||
// Clear the frontier highlight if this cell was already visited by another path
|
// Clear the frontier highlight if this cell was already visited by another path
|
||||||
onCellChanged?.Invoke(nx, nz, grid[nx, nz], Animation.MazeCellHighlight.None);
|
onCellChanged?.Invoke(nx, nz, grid[nx, nz], Animation.MazeCellHighlight.None);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.EvaluatingValid);
|
||||||
|
onCellChanged?.Invoke(wx, wz, grid[wx, wz], Animation.MazeCellHighlight.None);
|
||||||
|
|
||||||
grid[wx, wz] = MazeReworkCellType.Corridor;
|
grid[wx, wz] = MazeReworkCellType.Corridor;
|
||||||
grid[nx, nz] = MazeReworkCellType.Corridor;
|
grid[nx, nz] = MazeReworkCellType.Corridor;
|
||||||
visited[wx, wz] = true;
|
visited[wx, wz] = true;
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Baba_yaga.GameSetup.MazeRework.Animation
|
||||||
|
{
|
||||||
|
public class HighlightLinger : MonoBehaviour
|
||||||
|
{
|
||||||
|
public float lingerTime = 0.4f;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
StartCoroutine(LingerAndDie());
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator LingerAndDie()
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(lingerTime);
|
||||||
|
|
||||||
|
// Optional: fade out logic could go here
|
||||||
|
float fadeOutTime = 0.1f;
|
||||||
|
float time = 0f;
|
||||||
|
Vector3 startScale = transform.localScale;
|
||||||
|
|
||||||
|
while (time < fadeOutTime)
|
||||||
|
{
|
||||||
|
time += Time.deltaTime;
|
||||||
|
transform.localScale = Vector3.Lerp(startScale, Vector3.zero, time / fadeOutTime);
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5e88f5f0389dbd043937d08377e3168a
|
||||||
@@ -7,9 +7,12 @@ namespace Baba_yaga.GameSetup.MazeRework.Animation
|
|||||||
public class MazeAnimator : MonoBehaviour
|
public class MazeAnimator : MonoBehaviour
|
||||||
{
|
{
|
||||||
[Header("Animation Settings")]
|
[Header("Animation Settings")]
|
||||||
[Tooltip("How many cell changes to process in a single frame. Higher = faster generation.")]
|
[Tooltip("How many cell changes to process in a single frame (if stepDelay is 0).")]
|
||||||
[Min(1)]
|
[Min(1)]
|
||||||
public int cellsPerFrame = 5;
|
public int cellsPerFrame = 1; // Default to 1 so you can see it clearly!
|
||||||
|
|
||||||
|
[Tooltip("Delay in seconds between every single cell change. Set to > 0 to actually see the checking flashes!")]
|
||||||
|
public float stepDelay = 0.05f;
|
||||||
|
|
||||||
[Tooltip("Extra delay (in seconds) between major generation phases (like switching from Rooms to Carving).")]
|
[Tooltip("Extra delay (in seconds) between major generation phases (like switching from Rooms to Carving).")]
|
||||||
public float delayBetweenPhases = 0.5f;
|
public float delayBetweenPhases = 0.5f;
|
||||||
@@ -63,6 +66,7 @@ namespace Baba_yaga.GameSetup.MazeRework.Animation
|
|||||||
}
|
}
|
||||||
|
|
||||||
spawner.Clear();
|
spawner.Clear();
|
||||||
|
spawner.isPreviewMode = true; // Phase 1: Simple preview blocks
|
||||||
|
|
||||||
MazeAnimationPhase currentPhase = MazeAnimationPhase.RoomPlacement;
|
MazeAnimationPhase currentPhase = MazeAnimationPhase.RoomPlacement;
|
||||||
int processedThisFrame = 0;
|
int processedThisFrame = 0;
|
||||||
@@ -80,13 +84,29 @@ namespace Baba_yaga.GameSetup.MazeRework.Animation
|
|||||||
}
|
}
|
||||||
|
|
||||||
workingGrid[change.X, change.Z] = change.Type;
|
workingGrid[change.X, change.Z] = change.Type;
|
||||||
workingHighlights[change.X, change.Z] = change.Highlight;
|
|
||||||
|
if (change.Highlight == MazeCellHighlight.EvaluatingValid ||
|
||||||
|
change.Highlight == MazeCellHighlight.EvaluatingInvalid ||
|
||||||
|
change.Highlight == MazeCellHighlight.Evaluating)
|
||||||
|
{
|
||||||
|
// Linger flashes independently so they don't get erased if cellsPerFrame > 1
|
||||||
|
spawner.FlashHighlight(change.Highlight, change.X, change.Z, yOffset, container);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
workingHighlights[change.X, change.Z] = change.Highlight;
|
||||||
|
}
|
||||||
|
|
||||||
// Refresh the cell and its neighbors in the spawner
|
// Refresh the cell and its neighbors in the spawner
|
||||||
spawner.RefreshCell(workingGrid, workingHighlights, change.X, change.Z, yOffset, container);
|
spawner.RefreshCell(workingGrid, workingHighlights, change.X, change.Z, yOffset, container);
|
||||||
|
|
||||||
processedThisFrame++;
|
processedThisFrame++;
|
||||||
if (processedThisFrame >= cellsPerFrame)
|
|
||||||
|
if (stepDelay > 0f)
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(stepDelay);
|
||||||
|
}
|
||||||
|
else if (processedThisFrame >= cellsPerFrame)
|
||||||
{
|
{
|
||||||
yield return null; // Wait for next frame
|
yield return null; // Wait for next frame
|
||||||
processedThisFrame = 0;
|
processedThisFrame = 0;
|
||||||
@@ -96,21 +116,52 @@ namespace Baba_yaga.GameSetup.MazeRework.Animation
|
|||||||
// Wait a moment at the end before finalizing
|
// Wait a moment at the end before finalizing
|
||||||
if (delayBetweenPhases > 0f)
|
if (delayBetweenPhases > 0f)
|
||||||
{
|
{
|
||||||
yield return new WaitForSeconds(delayBetweenPhases);
|
yield return new WaitForSeconds(delayBetweenPhases * 2f); // Extra pause to admire the 2D layout!
|
||||||
}
|
}
|
||||||
|
|
||||||
// One final sync with finalGrid just to be absolutely safe
|
// --- Phase 2: Render 3D Map ---
|
||||||
|
spawner.isPreviewMode = false;
|
||||||
|
|
||||||
|
// Sweep across the grid and spawn the heavy 3D modular pieces
|
||||||
for (int z = 0; z < depth; z++)
|
for (int z = 0; z < depth; z++)
|
||||||
{
|
{
|
||||||
for (int x = 0; x < width; x++)
|
for (int x = 0; x < width; x++)
|
||||||
{
|
{
|
||||||
bool gridChanged = workingGrid[x, z] != finalGrid[x, z];
|
workingGrid[x, z] = finalGrid[x, z];
|
||||||
bool highlightChanged = workingHighlights[x, z] != MazeCellHighlight.None;
|
workingHighlights[x, z] = MazeCellHighlight.None;
|
||||||
|
|
||||||
if (gridChanged || highlightChanged)
|
// Only yield when we actually spawn a piece to create a cool sweep wave!
|
||||||
|
if (finalGrid[x, z] != MazeReworkCellType.Wall)
|
||||||
{
|
{
|
||||||
workingGrid[x, z] = finalGrid[x, z];
|
// 1. Flash an Evaluating highlight to visualize "choosing" this cell
|
||||||
workingHighlights[x, z] = MazeCellHighlight.None;
|
spawner.FlashHighlight(MazeCellHighlight.EvaluatingValid, x, z, yOffset, container);
|
||||||
|
|
||||||
|
if (stepDelay > 0f)
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(stepDelay * 0.5f); // Short pause for the check
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Spawn the actual piece
|
||||||
|
spawner.RefreshCell(workingGrid, workingHighlights, x, z, yOffset, container);
|
||||||
|
|
||||||
|
// Wait a tiny fraction of a second to create the sweeping wave effect
|
||||||
|
if (stepDelay > 0f)
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(stepDelay * 0.5f); // faster than the algorithm checks
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
processedThisFrame++;
|
||||||
|
if (processedThisFrame >= cellsPerFrame * 2) // Twice as fast as algorithm phase
|
||||||
|
{
|
||||||
|
yield return null;
|
||||||
|
processedThisFrame = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Even if it's a wall, refresh it to clear the preview walls (if any)
|
||||||
spawner.RefreshCell(workingGrid, workingHighlights, x, z, yOffset, container);
|
spawner.RefreshCell(workingGrid, workingHighlights, x, z, yOffset, container);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ namespace Baba_yaga.GameSetup.MazeRework.Animation
|
|||||||
None,
|
None,
|
||||||
SearchHead, // Current cell being evaluated (DFS, Prim's)
|
SearchHead, // Current cell being evaluated (DFS, Prim's)
|
||||||
Frontier, // Known candidate cells (Prim's)
|
Frontier, // Known candidate cells (Prim's)
|
||||||
Evaluating // Walls currently being considered (Kruskal's)
|
Evaluating, // Walls currently being considered (Kruskal's)
|
||||||
|
EvaluatingValid,
|
||||||
|
EvaluatingInvalid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Baba_yaga.GameSetup.MazeRework.Animation
|
||||||
|
{
|
||||||
|
public class PopInAnimation : MonoBehaviour
|
||||||
|
{
|
||||||
|
public float duration = 0.25f;
|
||||||
|
public float delay = 0f;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
StartCoroutine(AnimateScale());
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator AnimateScale()
|
||||||
|
{
|
||||||
|
Vector3 targetScale = transform.localScale;
|
||||||
|
Quaternion targetRot = transform.localRotation;
|
||||||
|
|
||||||
|
transform.localScale = Vector3.zero;
|
||||||
|
// Start rotation off by 90 degrees on Y axis so it visibly "spins" into the correct orientation
|
||||||
|
transform.localRotation = targetRot * Quaternion.Euler(0, -90f, 0);
|
||||||
|
|
||||||
|
if (delay > 0f)
|
||||||
|
yield return new WaitForSeconds(delay);
|
||||||
|
|
||||||
|
float time = 0f;
|
||||||
|
while (time < duration)
|
||||||
|
{
|
||||||
|
time += Time.deltaTime;
|
||||||
|
float t = time / duration;
|
||||||
|
|
||||||
|
// easeOutBack formula for a juicy overshoot effect
|
||||||
|
float c1 = 1.70158f;
|
||||||
|
float c3 = c1 + 1f;
|
||||||
|
float easeT = 1f + c3 * Mathf.Pow(t - 1f, 3f) + c1 * Mathf.Pow(t - 1f, 2f);
|
||||||
|
|
||||||
|
transform.localScale = targetScale * Mathf.Max(0f, easeT);
|
||||||
|
|
||||||
|
// Spin into place using easeOut
|
||||||
|
float easeOutQuad = 1 - (1 - t) * (1 - t);
|
||||||
|
transform.localRotation = Quaternion.SlerpUnclamped(targetRot * Quaternion.Euler(0, -90f, 0), targetRot, easeT);
|
||||||
|
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
transform.localScale = targetScale;
|
||||||
|
transform.localRotation = targetRot;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 43114e744edaec247a2ece63347b73cd
|
||||||
@@ -28,6 +28,16 @@ namespace Baba_yaga.GameSetup.MazeRework
|
|||||||
[Tooltip("Prefab for the End cell (player exit point). Auto-rotates based on neighbors.")]
|
[Tooltip("Prefab for the End cell (player exit point). Auto-rotates based on neighbors.")]
|
||||||
public GameObject endPrefab;
|
public GameObject endPrefab;
|
||||||
|
|
||||||
|
[Header("Preview Mode Settings (Phase 1)")]
|
||||||
|
[Tooltip("If true, the spawner will only spawn simple preview blocks instead of full 3D modular pieces.")]
|
||||||
|
public bool isPreviewMode = false;
|
||||||
|
|
||||||
|
[Tooltip("Simple prefab to represent carved paths during the algorithm phase (e.g. a flat plane or basic cube).")]
|
||||||
|
public GameObject previewPathPrefab;
|
||||||
|
|
||||||
|
[Tooltip("Simple prefab to represent walls during the algorithm phase (optional, can be left null).")]
|
||||||
|
public GameObject previewWallPrefab;
|
||||||
|
|
||||||
[Header("Highlight Prefabs (Animation Only)")]
|
[Header("Highlight Prefabs (Animation Only)")]
|
||||||
public GameObject searchHeadPrefab;
|
public GameObject searchHeadPrefab;
|
||||||
public GameObject frontierPrefab;
|
public GameObject frontierPrefab;
|
||||||
@@ -53,7 +63,14 @@ namespace Baba_yaga.GameSetup.MazeRework
|
|||||||
[Tooltip("Physical distance between each grid cell center.")]
|
[Tooltip("Physical distance between each grid cell center.")]
|
||||||
public float spacing = 3.0f;
|
public float spacing = 3.0f;
|
||||||
|
|
||||||
private readonly Dictionary<Vector2Int, GameObject> _spawnedObjects = new Dictionary<Vector2Int, GameObject>();
|
private struct SpawnedCellData
|
||||||
|
{
|
||||||
|
public GameObject Instance;
|
||||||
|
public GameObject Prefab;
|
||||||
|
public float Rotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly Dictionary<Vector2Int, SpawnedCellData> _spawnedGridCells = new Dictionary<Vector2Int, SpawnedCellData>();
|
||||||
private readonly Dictionary<Vector2Int, GameObject> _spawnedHighlights = new Dictionary<Vector2Int, GameObject>();
|
private readonly Dictionary<Vector2Int, GameObject> _spawnedHighlights = new Dictionary<Vector2Int, GameObject>();
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
@@ -80,12 +97,12 @@ namespace Baba_yaga.GameSetup.MazeRework
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void Clear()
|
public void Clear()
|
||||||
{
|
{
|
||||||
foreach (var obj in _spawnedObjects.Values)
|
foreach (var data in _spawnedGridCells.Values)
|
||||||
{
|
{
|
||||||
if (obj == null) continue;
|
if (data.Instance == null) continue;
|
||||||
if (Application.isPlaying) Destroy(obj); else DestroyImmediate(obj);
|
if (Application.isPlaying) Destroy(data.Instance); else DestroyImmediate(data.Instance);
|
||||||
}
|
}
|
||||||
_spawnedObjects.Clear();
|
_spawnedGridCells.Clear();
|
||||||
|
|
||||||
foreach (var obj in _spawnedHighlights.Values)
|
foreach (var obj in _spawnedHighlights.Values)
|
||||||
{
|
{
|
||||||
@@ -131,6 +148,23 @@ namespace Baba_yaga.GameSetup.MazeRework
|
|||||||
RefreshSingleCell(grid, highlights, x, z - 1, width, depth, yOffset, container);
|
RefreshSingleCell(grid, highlights, x, z - 1, width, depth, yOffset, container);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void FlashHighlight(MazeCellHighlight hType, int x, int z, float yOffset, Transform container)
|
||||||
|
{
|
||||||
|
GameObject hPrefab = null;
|
||||||
|
if (hType == MazeCellHighlight.EvaluatingValid) hPrefab = searchHeadPrefab;
|
||||||
|
else if (hType == MazeCellHighlight.EvaluatingInvalid) hPrefab = evaluatingPrefab;
|
||||||
|
else if (hType == MazeCellHighlight.Evaluating) hPrefab = evaluatingPrefab;
|
||||||
|
|
||||||
|
if (hPrefab != null)
|
||||||
|
{
|
||||||
|
Vector3 localPos = new Vector3(x * spacing, yOffset, z * spacing);
|
||||||
|
GameObject spawnedH = Instantiate(hPrefab, container != null ? container : transform);
|
||||||
|
spawnedH.transform.localPosition = localPos;
|
||||||
|
spawnedH.name = $"Flash_{hType}_{x}_{z}";
|
||||||
|
spawnedH.AddComponent<Animation.HighlightLinger>(); // Self-destructs after lingering
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void RefreshSingleCell(MazeReworkCellType[,] grid, MazeCellHighlight[,] highlights, int x, int z, int width, int depth, float yOffset, Transform container)
|
private void RefreshSingleCell(MazeReworkCellType[,] grid, MazeCellHighlight[,] highlights, int x, int z, int width, int depth, float yOffset, Transform container)
|
||||||
{
|
{
|
||||||
if (x < 0 || x >= width || z < 0 || z >= depth) return;
|
if (x < 0 || x >= width || z < 0 || z >= depth) return;
|
||||||
@@ -153,6 +187,8 @@ namespace Baba_yaga.GameSetup.MazeRework
|
|||||||
if (hType == MazeCellHighlight.SearchHead) hPrefab = searchHeadPrefab;
|
if (hType == MazeCellHighlight.SearchHead) hPrefab = searchHeadPrefab;
|
||||||
else if (hType == MazeCellHighlight.Frontier) hPrefab = frontierPrefab;
|
else if (hType == MazeCellHighlight.Frontier) hPrefab = frontierPrefab;
|
||||||
else if (hType == MazeCellHighlight.Evaluating) hPrefab = evaluatingPrefab;
|
else if (hType == MazeCellHighlight.Evaluating) hPrefab = evaluatingPrefab;
|
||||||
|
else if (hType == MazeCellHighlight.EvaluatingValid) hPrefab = searchHeadPrefab; // Use same prefab or we can add new ones, but for now fallback to Head/Evaluating
|
||||||
|
else if (hType == MazeCellHighlight.EvaluatingInvalid) hPrefab = evaluatingPrefab;
|
||||||
|
|
||||||
if (hPrefab != null)
|
if (hPrefab != null)
|
||||||
{
|
{
|
||||||
@@ -160,58 +196,86 @@ namespace Baba_yaga.GameSetup.MazeRework
|
|||||||
GameObject spawnedH = Instantiate(hPrefab, container != null ? container : transform);
|
GameObject spawnedH = Instantiate(hPrefab, container != null ? container : transform);
|
||||||
spawnedH.transform.localPosition = localPos;
|
spawnedH.transform.localPosition = localPos;
|
||||||
spawnedH.name = $"Highlight_{hType}_{x}_{z}";
|
spawnedH.name = $"Highlight_{hType}_{x}_{z}";
|
||||||
|
// Highlights should pop instantly without animation since they are short-lived cursors
|
||||||
_spawnedHighlights[pos] = spawnedH;
|
_spawnedHighlights[pos] = spawnedH;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Process Grid Cells
|
// 2. Process Grid Cells
|
||||||
if (type == MazeReworkCellType.Wall)
|
GameObject targetPrefab = null;
|
||||||
|
float targetRot = 0f;
|
||||||
|
string targetName = "";
|
||||||
|
|
||||||
|
if (isPreviewMode)
|
||||||
{
|
{
|
||||||
if (_spawnedObjects.TryGetValue(pos, out GameObject existing))
|
if (type == MazeReworkCellType.Wall)
|
||||||
{
|
{
|
||||||
if (Application.isPlaying) Destroy(existing);
|
targetPrefab = previewWallPrefab;
|
||||||
else DestroyImmediate(existing);
|
targetName = "PreviewWall";
|
||||||
_spawnedObjects.Remove(pos);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
targetPrefab = previewPathPrefab;
|
||||||
|
targetName = "PreviewPath";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (type != MazeReworkCellType.Wall)
|
||||||
|
{
|
||||||
|
if (type == MazeReworkCellType.Start && beginningPrefab != null)
|
||||||
|
{
|
||||||
|
(_, float baseRot) = GetModularPrefabAndRotation(grid, x, z, width, depth);
|
||||||
|
targetPrefab = beginningPrefab;
|
||||||
|
targetRot = baseRot + beginningRotationOffset;
|
||||||
|
targetName = "Beginning";
|
||||||
|
}
|
||||||
|
else if (type == MazeReworkCellType.End && endPrefab != null)
|
||||||
|
{
|
||||||
|
(_, float baseRot) = GetModularPrefabAndRotation(grid, x, z, width, depth);
|
||||||
|
targetPrefab = endPrefab;
|
||||||
|
targetRot = baseRot + endRotationOffset;
|
||||||
|
targetName = "End";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(targetPrefab, targetRot) = GetModularPrefabAndRotation(grid, x, z, width, depth);
|
||||||
|
targetName = $"{type}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (targetPrefab == null)
|
||||||
|
{
|
||||||
|
if (_spawnedGridCells.TryGetValue(pos, out var existing))
|
||||||
|
{
|
||||||
|
if (Application.isPlaying) Destroy(existing.Instance);
|
||||||
|
else DestroyImmediate(existing.Instance);
|
||||||
|
_spawnedGridCells.Remove(pos);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == MazeReworkCellType.Start && beginningPrefab != null)
|
// If it already exists and is the identical prefab/rotation, DO NOT recreate it!
|
||||||
|
// This prevents PopInAnimation from constantly restarting when neighbors are evaluated.
|
||||||
|
if (_spawnedGridCells.TryGetValue(pos, out var existingData))
|
||||||
{
|
{
|
||||||
(_, float baseRot) = GetModularPrefabAndRotation(grid, x, z, width, depth);
|
if (existingData.Prefab == targetPrefab && Mathf.Approximately(existingData.Rotation, targetRot))
|
||||||
SpawnPrefab(beginningPrefab, x, yOffset, z, baseRot + beginningRotationOffset, container, "Beginning");
|
{
|
||||||
return;
|
return; // No change needed!
|
||||||
|
}
|
||||||
|
if (Application.isPlaying) Destroy(existingData.Instance);
|
||||||
|
else DestroyImmediate(existingData.Instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == MazeReworkCellType.End && endPrefab != null)
|
Vector3 localPosition = new Vector3(x * spacing, yOffset, z * spacing);
|
||||||
{
|
GameObject spawnedObj = Instantiate(targetPrefab, container != null ? container : transform);
|
||||||
(_, float baseRot) = GetModularPrefabAndRotation(grid, x, z, width, depth);
|
|
||||||
SpawnPrefab(endPrefab, x, yOffset, z, baseRot + endRotationOffset, container, "End");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
(GameObject modularPrefab, float yRotation) = GetModularPrefabAndRotation(grid, x, z, width, depth);
|
|
||||||
if (modularPrefab != null)
|
|
||||||
{
|
|
||||||
SpawnPrefab(modularPrefab, x, yOffset, z, yRotation, container, $"{type}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SpawnPrefab(GameObject prefab, int x, float y, int z, float yRotation, Transform container, string namePrefix)
|
|
||||||
{
|
|
||||||
Vector3 localPosition = new Vector3(x * spacing, y, z * spacing);
|
|
||||||
GameObject spawnedObj = Instantiate(prefab, container != null ? container : transform);
|
|
||||||
spawnedObj.transform.localPosition = localPosition;
|
spawnedObj.transform.localPosition = localPosition;
|
||||||
spawnedObj.transform.localRotation = Quaternion.Euler(0f, yRotation, 0f);
|
spawnedObj.transform.localRotation = Quaternion.Euler(0f, targetRot, 0f);
|
||||||
spawnedObj.name = $"{namePrefix}_{x}_{z}";
|
spawnedObj.name = $"{targetName}_{x}_{z}";
|
||||||
|
spawnedObj.AddComponent<Animation.PopInAnimation>();
|
||||||
|
|
||||||
var pos = new Vector2Int(x, z);
|
_spawnedGridCells[pos] = new SpawnedCellData { Instance = spawnedObj, Prefab = targetPrefab, Rotation = targetRot };
|
||||||
if (_spawnedObjects.TryGetValue(pos, out GameObject existing))
|
|
||||||
{
|
|
||||||
if (Application.isPlaying) Destroy(existing);
|
|
||||||
else DestroyImmediate(existing);
|
|
||||||
}
|
|
||||||
_spawnedObjects[pos] = spawnedObj;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private (GameObject, float) GetModularPrefabAndRotation(MazeReworkCellType[,] grid, int x, int z, int width, int depth)
|
private (GameObject, float) GetModularPrefabAndRotation(MazeReworkCellType[,] grid, int x, int z, int width, int depth)
|
||||||
|
|||||||
Reference in New Issue
Block a user