diff --git a/Assets/Art/Materials/TrashMaze.meta b/Assets/Art/Materials/TrashMaze.meta new file mode 100644 index 00000000..6e46148c --- /dev/null +++ b/Assets/Art/Materials/TrashMaze.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59f400cf78b0d3949a1280b33dd96e3c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Materials/TrashMaze/MazeBackground.mat b/Assets/Art/Materials/TrashMaze/MazeBackground.mat new file mode 100644 index 00000000..b7941929 --- /dev/null +++ b/Assets/Art/Materials/TrashMaze/MazeBackground.mat @@ -0,0 +1,59 @@ +%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: MazeBackground + m_Shader: {fileID: 4800000, guid: b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3, 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: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LitTex: + m_Texture: {fileID: 2800000, guid: 2355d01d9d23cfe49a3e05ea9b4958e6, type: 3} + 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} + - _MaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _UnlitTex: + m_Texture: {fileID: 2800000, guid: 979d8dc9d4d55f043b7426e437365c30, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _EnableExternalAlpha: 0 + - _TransitionSoftness: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Art/Materials/TrashMaze/MazeBackground.mat.meta b/Assets/Art/Materials/TrashMaze/MazeBackground.mat.meta new file mode 100644 index 00000000..1ba7fcbd --- /dev/null +++ b/Assets/Art/Materials/TrashMaze/MazeBackground.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 943d8f5cb68e5d64ea448054ba6c28f0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Materials/TrashMaze/MazeObjectProgressiveTemplate.mat b/Assets/Art/Materials/TrashMaze/MazeObjectProgressiveTemplate.mat new file mode 100644 index 00000000..0aea4403 --- /dev/null +++ b/Assets/Art/Materials/TrashMaze/MazeObjectProgressiveTemplate.mat @@ -0,0 +1,59 @@ +%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: MazeObjectProgressiveTemplate + m_Shader: {fileID: 4800000, guid: 732fa975ac924d89bb0078279d2cdb0b, 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: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + 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} + - _MaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RevealMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _EnableExternalAlpha: 0 + - _IsInVision: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Art/Materials/TrashMaze/MazeObjectProgressiveTemplate.mat.meta b/Assets/Art/Materials/TrashMaze/MazeObjectProgressiveTemplate.mat.meta new file mode 100644 index 00000000..3502b15d --- /dev/null +++ b/Assets/Art/Materials/TrashMaze/MazeObjectProgressiveTemplate.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e053220514a0c64883d9484863533fe +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Materials/TrashMaze/MazeObjectTemplate.mat b/Assets/Art/Materials/TrashMaze/MazeObjectTemplate.mat new file mode 100644 index 00000000..f79130fb --- /dev/null +++ b/Assets/Art/Materials/TrashMaze/MazeObjectTemplate.mat @@ -0,0 +1,56 @@ +%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: MazeObjectTemplate + m_Shader: {fileID: 4800000, guid: c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4, 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: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + 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} + - _MaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _EnableExternalAlpha: 0 + - _IsInVision: 0 + - _IsRevealed: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Art/Materials/TrashMaze/MazeObjectTemplate.mat.meta b/Assets/Art/Materials/TrashMaze/MazeObjectTemplate.mat.meta new file mode 100644 index 00000000..b893d445 --- /dev/null +++ b/Assets/Art/Materials/TrashMaze/MazeObjectTemplate.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07b06abfc5d910b4a8c525979cd29f29 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Placeholders/dark_maze.png b/Assets/External/Placeholders/dark_maze.png new file mode 100644 index 00000000..c360f279 Binary files /dev/null and b/Assets/External/Placeholders/dark_maze.png differ diff --git a/Assets/External/Placeholders/dark_maze.png.meta b/Assets/External/Placeholders/dark_maze.png.meta new file mode 100644 index 00000000..bebc78a3 --- /dev/null +++ b/Assets/External/Placeholders/dark_maze.png.meta @@ -0,0 +1,195 @@ +fileFormatVersion: 2 +guid: 979d8dc9d4d55f043b7426e437365c30 +TextureImporter: + internalIDToNameTable: + - first: + 213: 5438675420682048811 + second: dark_maze_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: dark_maze_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 2048 + height: 2048 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: b25d662da7e0a7b40800000000000000 + internalID: 5438675420682048811 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + dark_maze_0: 5438675420682048811 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Placeholders/item_normal.png b/Assets/External/Placeholders/item_normal.png new file mode 100644 index 00000000..0f67a813 Binary files /dev/null and b/Assets/External/Placeholders/item_normal.png differ diff --git a/Assets/External/Placeholders/item_normal.png.meta b/Assets/External/Placeholders/item_normal.png.meta new file mode 100644 index 00000000..c11ab895 --- /dev/null +++ b/Assets/External/Placeholders/item_normal.png.meta @@ -0,0 +1,195 @@ +fileFormatVersion: 2 +guid: 22bb2c64be7aa8e438277c533ecb8bee +TextureImporter: + internalIDToNameTable: + - first: + 213: -9213196934004512817 + second: item_normal_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: item_normal_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 385 + height: 257 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: fc761feb336242080800000000000000 + internalID: -9213196934004512817 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + item_normal_0: -9213196934004512817 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Placeholders/item_outline.png b/Assets/External/Placeholders/item_outline.png new file mode 100644 index 00000000..addcae71 Binary files /dev/null and b/Assets/External/Placeholders/item_outline.png differ diff --git a/Assets/External/Placeholders/item_outline.png.meta b/Assets/External/Placeholders/item_outline.png.meta new file mode 100644 index 00000000..a1e2364a --- /dev/null +++ b/Assets/External/Placeholders/item_outline.png.meta @@ -0,0 +1,195 @@ +fileFormatVersion: 2 +guid: 0559a1e87cd8a434f9647206f5ea237e +TextureImporter: + internalIDToNameTable: + - first: + 213: 8669786265954709882 + second: item_outline_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: item_outline_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 385 + height: 257 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: a717ac4aca4415870800000000000000 + internalID: 8669786265954709882 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + item_outline_0: 8669786265954709882 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Placeholders/light_maze.png b/Assets/External/Placeholders/light_maze.png new file mode 100644 index 00000000..f2646e02 Binary files /dev/null and b/Assets/External/Placeholders/light_maze.png differ diff --git a/Assets/External/Placeholders/light_maze.png.meta b/Assets/External/Placeholders/light_maze.png.meta new file mode 100644 index 00000000..c2914361 --- /dev/null +++ b/Assets/External/Placeholders/light_maze.png.meta @@ -0,0 +1,195 @@ +fileFormatVersion: 2 +guid: 2355d01d9d23cfe49a3e05ea9b4958e6 +TextureImporter: + internalIDToNameTable: + - first: + 213: 8777077890197170708 + second: light_maze_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: light_maze_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 2048 + height: 2048 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 41a232396d17ec970800000000000000 + internalID: 8777077890197170708 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + light_maze_0: 8777077890197170708 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Levels/Dump/MazeBackground.prefab b/Assets/Prefabs/Levels/Dump/MazeBackground.prefab new file mode 100644 index 00000000..b48d0879 --- /dev/null +++ b/Assets/Prefabs/Levels/Dump/MazeBackground.prefab @@ -0,0 +1,93 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &20851209822974582 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8861526539906903110} + - component: {fileID: 6548959094921542577} + m_Layer: 0 + m_Name: MazeBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8861526539906903110 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 20851209822974582} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 10.8, z: 0} + m_LocalScale: {x: 2, y: 2, z: 2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &6548959094921542577 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 20851209822974582} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + 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: 943d8f5cb68e5d64ea448054ba6c28f0, 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: 0 + 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_Sprite: {fileID: 8777077890197170708, guid: 2355d01d9d23cfe49a3e05ea9b4958e6, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 20.48, y: 20.48} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 diff --git a/Assets/Prefabs/Levels/Dump/MazeBackground.prefab.meta b/Assets/Prefabs/Levels/Dump/MazeBackground.prefab.meta new file mode 100644 index 00000000..d1c7d04f --- /dev/null +++ b/Assets/Prefabs/Levels/Dump/MazeBackground.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fe50f047edb550d4986d997281ffc47a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Levels/Dump/Pulver.prefab b/Assets/Prefabs/Levels/Dump/Pulver.prefab new file mode 100644 index 00000000..1081a939 --- /dev/null +++ b/Assets/Prefabs/Levels/Dump/Pulver.prefab @@ -0,0 +1,222 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7654873269754452578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2771277034307921359} + - component: {fileID: 1299144459295276776} + - component: {fileID: 2461082630725827914} + - component: {fileID: 6236765161241564569} + - component: {fileID: -8191421428015321370} + - component: {fileID: 1741228342480194746} + m_Layer: 0 + m_Name: Pulver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2771277034307921359 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7654873269754452578} + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1299144459295276776 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7654873269754452578} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + 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: 9dfc825aed78fcd4ba02077103263b40, 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: 0 + 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_Sprite: {fileID: 1814454124, guid: 8af0253099943e84e960c630bafbbdb4, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 4.15, y: 4.58} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 +--- !u!114 &2461082630725827914 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7654873269754452578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.TrashMaze.Core.PulverController + moveSpeed: 5 + obstacleMask: + serializedVersion: 2 + m_Bits: 64 + colliderRadius: 0.5 + visionRadius: 5 +--- !u!70 &6236765161241564569 +CapsuleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7654873269754452578} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_Size: {x: 4.15, y: 4.58} + m_Direction: 0 +--- !u!114 &-8191421428015321370 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7654873269754452578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 373b52eb9bf8c40f785bb6947a1aee66, type: 3} + m_Name: + m_EditorClassIdentifier: AstarPathfindingProject::Pathfinding.Seeker + version: 1 + drawGizmos: 1 + detailedGizmos: 0 + startEndModifier: + addPoints: 0 + exactStartPoint: 3 + exactEndPoint: 3 + useRaycasting: 0 + mask: + serializedVersion: 2 + m_Bits: 4294967295 + useGraphRaycasting: 0 + traversableTags: -1 + tagPenalties: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + graphMask: + value: -1 +--- !u!114 &1741228342480194746 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7654873269754452578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6eb1402c17e84a9282a7f0f62eb584f, type: 3} + m_Name: + m_EditorClassIdentifier: AstarPathfindingProject::Pathfinding.AIPath + version: 5 + radius: 2 + height: 1 + canMove: 1 + maxSpeed: 25 + gravity: {x: 0, y: 0, z: 0} + groundMask: + serializedVersion: 2 + m_Bits: 4294967295 + centerOffsetCompatibility: NaN + repathRateCompatibility: NaN + canSearchCompability: 0 + orientation: 1 + enableRotation: 0 + autoRepath: + mode: 2 + interval: 0.5 + sensitivity: 10 + maximumInterval: 5 + visualizeSensitivity: 0 + targetCompatibility: {fileID: 0} + maxAcceleration: 10000 + rotationSpeed: 360 + slowdownDistance: 0.6 + pickNextWaypointDist: 2 + endReachedDistance: 0.5 + alwaysDrawGizmos: 1 + slowWhenNotFacingTarget: 1 + whenCloseToDestination: 0 + constrainInsideGraph: 0 diff --git a/Assets/Prefabs/Levels/Dump/Pulver.prefab.meta b/Assets/Prefabs/Levels/Dump/Pulver.prefab.meta new file mode 100644 index 00000000..bb17cc52 --- /dev/null +++ b/Assets/Prefabs/Levels/Dump/Pulver.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 182ee38fc449c6342b8a401844067b5b +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Levels/Dump/RevealableObject.prefab b/Assets/Prefabs/Levels/Dump/RevealableObject.prefab new file mode 100644 index 00000000..efbe92c6 --- /dev/null +++ b/Assets/Prefabs/Levels/Dump/RevealableObject.prefab @@ -0,0 +1,157 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6259373434446242904 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7983424933738472089} + - component: {fileID: 6487644332527623320} + - component: {fileID: 397845239581813408} + - component: {fileID: 3115580033298799659} + m_Layer: 0 + m_Name: RevealableObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7983424933738472089 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6259373434446242904} + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &6487644332527623320 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6259373434446242904} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + 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: 07b06abfc5d910b4a8c525979cd29f29, 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: 0 + 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_Sprite: {fileID: -9213196934004512817, guid: 22bb2c64be7aa8e438277c533ecb8bee, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 3.85, y: 2.57} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 +--- !u!114 &397845239581813408 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6259373434446242904} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.TrashMaze.Objects.RevealableObject + normalSprite: {fileID: -9213196934004512817, guid: 22bb2c64be7aa8e438277c533ecb8bee, type: 3} + outlineSprite: {fileID: 8669786265954709882, guid: 0559a1e87cd8a434f9647206f5ea237e, type: 3} + isBoosterPack: 0 + isExit: 0 +--- !u!61 &3115580033298799659 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6259373434446242904} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 3.85, y: 2.57} + newSize: {x: 3.85, y: 2.57} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Size: {x: 3.85, y: 2.57} + m_EdgeRadius: 0 diff --git a/Assets/Prefabs/Levels/Dump/RevealableObject.prefab.meta b/Assets/Prefabs/Levels/Dump/RevealableObject.prefab.meta new file mode 100644 index 00000000..57b32dc1 --- /dev/null +++ b/Assets/Prefabs/Levels/Dump/RevealableObject.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 07f826f001311e04984c3efc9ee2b897 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/MiniGames/StatueDecoration.unity b/Assets/Scenes/MiniGames/StatueDecoration.unity index 0d19c9d1..cfff276c 100644 --- a/Assets/Scenes/MiniGames/StatueDecoration.unity +++ b/Assets/Scenes/MiniGames/StatueDecoration.unity @@ -568,42 +568,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 65358844} m_CullTransparentMesh: 1 ---- !u!1 &78772562 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 78772563} - m_Layer: 5 - m_Name: Handle Slide Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &78772563 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 78772562} - 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: 1330412516} - m_Father: {fileID: 1836686367} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: -20} - m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &103521088 GameObject: m_ObjectHideFlags: 0 @@ -902,81 +866,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 167351357} m_CullTransparentMesh: 1 ---- !u!1 &176420262 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 176420263} - - component: {fileID: 176420265} - - component: {fileID: 176420264} - m_Layer: 5 - m_Name: Handle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &176420263 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 176420262} - 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: 1939169328} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 20, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &176420264 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 176420262} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &176420265 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 176420262} - m_CullTransparentMesh: 1 --- !u!1 &194466354 GameObject: m_ObjectHideFlags: 0 @@ -1209,44 +1098,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 254256966} m_CullTransparentMesh: 1 ---- !u!1 &362232290 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 362232291} - m_Layer: 5 - m_Name: ScaleUI - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &362232291 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 362232290} - 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: 896457135} - - {fileID: 1836686367} - - {fileID: 1822363588} - m_Father: {fileID: 1217454518} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 500, y: 500} - m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &403667977 GameObject: m_ObjectHideFlags: 0 @@ -1953,216 +1804,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 892106116} m_CullTransparentMesh: 1 ---- !u!1 &896457134 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 896457135} - - component: {fileID: 896457136} - m_Layer: 5 - m_Name: ScaleSlider - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &896457135 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 896457134} - 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: 1839351854} - - {fileID: 2014948430} - - {fileID: 1939169328} - m_Father: {fileID: 362232291} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: 0, y: -30} - m_SizeDelta: {x: 0, y: 30} - m_Pivot: {x: 0.5, y: 0} ---- !u!114 &896457136 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 896457134} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Slider - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 176420264} - m_FillRect: {fileID: 1503744524} - m_HandleRect: {fileID: 176420263} - m_Direction: 0 - m_MinValue: 0.1 - m_MaxValue: 2 - m_WholeNumbers: 0 - m_Value: 1 - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] ---- !u!1 &903514957 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 903514958} - - component: {fileID: 903514961} - - component: {fileID: 903514960} - - component: {fileID: 903514959} - m_Layer: 5 - m_Name: Reset - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &903514958 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 903514957} - 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: 1822363588} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 150, y: 150} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &903514959 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 903514957} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 903514960} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &903514960 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 903514957} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 1785316139606055395, guid: ee014bd71cac2bc4ab845f435726f383, type: 3} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &903514961 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 903514957} - m_CullTransparentMesh: 1 --- !u!1 &1034770168 GameObject: m_ObjectHideFlags: 0 @@ -2692,7 +2333,6 @@ RectTransform: - {fileID: 61401516} - {fileID: 1678978} - {fileID: 1758487248} - - {fileID: 362232291} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -2700,42 +2340,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} ---- !u!1 &1253473074 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1253473075} - m_Layer: 5 - m_Name: Fill Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1253473075 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1253473074} - 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: 2001869311} - m_Father: {fileID: 1836686367} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.25, y: 0} - m_AnchorMax: {x: 0.75, y: 1} - m_AnchoredPosition: {x: 0, y: -5} - m_SizeDelta: {x: 0, y: -20} - m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1259957078 GameObject: m_ObjectHideFlags: 0 @@ -2901,81 +2505,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1325274729} m_CullTransparentMesh: 1 ---- !u!1 &1330412515 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1330412516} - - component: {fileID: 1330412518} - - component: {fileID: 1330412517} - m_Layer: 5 - m_Name: Handle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1330412516 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1330412515} - 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: 78772563} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1330412517 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1330412515} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1330412518 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1330412515} - m_CullTransparentMesh: 1 --- !u!1 &1443594948 GameObject: m_ObjectHideFlags: 0 @@ -3029,81 +2558,6 @@ MonoBehaviour: m_EditorClassIdentifier: AppleHillsScripts::Minigames.StatueDressup.UI.PlayAreaPage PageName: PlayArea transitionDuration: 0.3 ---- !u!1 &1503744523 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1503744524} - - component: {fileID: 1503744526} - - component: {fileID: 1503744525} - m_Layer: 5 - m_Name: Fill - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1503744524 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1503744523} - 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: 2014948430} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 10, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1503744525 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1503744523} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1503744526 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1503744523} - m_CullTransparentMesh: 1 --- !u!1 &1542794366 GameObject: m_ObjectHideFlags: 0 @@ -3449,7 +2903,7 @@ MonoBehaviour: takePhotoButton: {fileID: 37633367} statue: {fileID: 1078270173} draggablePrefab: {fileID: 8998709565229564215, guid: 064cd4d021ea13e47860a59bbe8224aa, type: 3} - editUIPrefab: {fileID: 0} + editUIPrefab: {fileID: 521235113507599892, guid: 8ad71c1dc8542e54494a857fa06095fb, type: 3} playAreaPage: {fileID: 0} photoGalleryPage: {fileID: 0} openGalleryButton: {fileID: 0} @@ -3529,81 +2983,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1711903460 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1711903461} - - component: {fileID: 1711903463} - - component: {fileID: 1711903462} - m_Layer: 5 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1711903461 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1711903460} - 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: 1836686367} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.25, y: 0} - m_AnchorMax: {x: 0.75, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1711903462 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1711903460} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1711903463 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1711903460} - m_CullTransparentMesh: 1 --- !u!1 &1733895145 GameObject: m_ObjectHideFlags: 0 @@ -3852,502 +3231,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &1822363587 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1822363588} - - component: {fileID: 1822363589} - m_Layer: 5 - m_Name: Buttons - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1822363588 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1822363587} - 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: 903514958} - - {fileID: 1919532590} - m_Father: {fileID: 362232291} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: 0, y: -200} - m_SizeDelta: {x: 0, y: 150} - m_Pivot: {x: 0.5, y: 0} ---- !u!114 &1822363589 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1822363587} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup - m_Padding: - m_Left: 25 - m_Right: 25 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 4 - m_Spacing: 0 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!1 &1836686366 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1836686367} - - component: {fileID: 1836686368} - m_Layer: 5 - m_Name: RotationSlider - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1836686367 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1836686366} - 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: 1711903461} - - {fileID: 1253473075} - - {fileID: 78772563} - m_Father: {fileID: 362232291} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: -30, y: 0} - m_SizeDelta: {x: 30, y: 0} - m_Pivot: {x: 0, y: 0.5} ---- !u!114 &1836686368 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1836686366} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Slider - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1330412517} - m_FillRect: {fileID: 2001869311} - m_HandleRect: {fileID: 1330412516} - m_Direction: 2 - m_MinValue: -180 - m_MaxValue: 180 - m_WholeNumbers: 0 - m_Value: 0 - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] ---- !u!1 &1839351853 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1839351854} - - component: {fileID: 1839351856} - - component: {fileID: 1839351855} - m_Layer: 5 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1839351854 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1839351853} - 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: 896457135} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.25} - m_AnchorMax: {x: 1, y: 0.75} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1839351855 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1839351853} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1839351856 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1839351853} - m_CullTransparentMesh: 1 ---- !u!1 &1919532589 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1919532590} - - component: {fileID: 1919532593} - - component: {fileID: 1919532592} - - component: {fileID: 1919532591} - m_Layer: 5 - m_Name: Accept - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1919532590 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1919532589} - 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: 1822363588} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 150, y: 150} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1919532591 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1919532589} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1919532592} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &1919532592 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1919532589} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 2636902231072113825, guid: ee014bd71cac2bc4ab845f435726f383, type: 3} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1919532593 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1919532589} - m_CullTransparentMesh: 1 ---- !u!1 &1939169327 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1939169328} - m_Layer: 5 - m_Name: Handle Slide Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1939169328 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1939169327} - 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: 176420263} - m_Father: {fileID: 896457135} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -20, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &2001869310 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2001869311} - - component: {fileID: 2001869313} - - component: {fileID: 2001869312} - m_Layer: 5 - m_Name: Fill - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2001869311 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2001869310} - 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: 1253473075} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 10} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2001869312 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2001869310} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &2001869313 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2001869310} - m_CullTransparentMesh: 1 ---- !u!1 &2014948429 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2014948430} - m_Layer: 5 - m_Name: Fill Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2014948430 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2014948429} - 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: 1503744524} - m_Father: {fileID: 896457135} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.25} - m_AnchorMax: {x: 1, y: 0.75} - m_AnchoredPosition: {x: -5, y: 0} - m_SizeDelta: {x: -20, y: 0} - m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &2034809389 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/TestingStuff/MichalTesting_TrashMaze.unity b/Assets/Scenes/TestingStuff/MichalTesting_TrashMaze.unity new file mode 100644 index 00000000..206fdfb6 --- /dev/null +++ b/Assets/Scenes/TestingStuff/MichalTesting_TrashMaze.unity @@ -0,0 +1,1112 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &200221576 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 200221578} + - component: {fileID: 200221577} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &200221577 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200221576} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + 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: 9dfc825aed78fcd4ba02077103263b40, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 622133659 + m_SortingLayer: -1 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Sprite: {fileID: 2122954809, guid: 91cb3ae9a614f914997704a638d8b514, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 +--- !u!4 &200221578 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 200221576} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 75, y: 75, z: 75} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &428838006 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 428838008} + - component: {fileID: 428838007} + m_Layer: 0 + m_Name: TrashMazeController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &428838007 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 428838006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0, type: 3} + m_Name: + m_EditorClassIdentifier: AppleHillsScripts::Minigames.TrashMaze.Core.TrashMazeController + pulverPrefab: {fileID: 2461082630725827914, guid: 182ee38fc449c6342b8a401844067b5b, type: 3} + startPosition: {fileID: 599773116} + backgroundRenderer: {fileID: 655885596} + exitPosition: {fileID: 1988479733} +--- !u!4 &428838008 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 428838006} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.88557, y: -0.8, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 599773116} + - {fileID: 1988479733} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &599773115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 599773116} + m_Layer: 0 + m_Name: StartPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &599773116 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599773115} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2.88557, y: -13.7, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 428838008} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &655885596 stripped +SpriteRenderer: + m_CorrespondingSourceObject: {fileID: 6548959094921542577, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + m_PrefabInstance: {fileID: 3227266997639691951} + m_PrefabAsset: {fileID: 0} +--- !u!1 &965871067 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 965871069} + - component: {fileID: 965871068} + m_Layer: 0 + m_Name: A* + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &965871068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965871067} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 78396926cbbfc4ac3b48fc5fc34a87d1, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + data: + dataString: UEsDBBQAAAgIAAAIIeyzSMpYXAIAABEFAAALACQAZ3JhcGgwLmpzb24KACAAAAAAAAEAGAAAgD7V3rGdAQCAPtXesZ0BAIA+1d6xnQF1VE1z2jAQ/SuMzqUDSdxAby0JpAcSJrSTiy9CWmMNsuSR5ABh+O/dlW3s0OnJ0r63u28/5BNTxpcggnULp+TSSmDfB4zO7MugA5/gwLfWrNUHtJw3JUNOJB45rzwoi/YxuXlbQHBK/DBbTeQRGiujMuuKR7mFmfXBoznj2gNCzgbyNmg6DdgBP8MpuRzxdHNPpw88TUeDMx4FmACuo7bEllazKiM0L0qQJLkjJy07qWkGi2kYJFxYrZVvlLBwLGOl6zIHB1SqVBwLi9lv8ZqD2uaBLl/v+t4vWeYhNJocPz4ohx2qw7Kftm5bwf2uFvbOdUWJkvtvUVQddvkPPhxHOHO2eGozj0eUI+RK7F75UXAfen3tmx866ePYnz3XO77R8JaDebYLZysjEQyuItfKw81Dd72UNstB7Dp7LfXKWJX/nw7VcI7VH2ZaFRuCYvPQsNY2NjzOHhyO5hcKjpvhmxBoJRV/PPzm2/4KNcBcOR8Qaqo0JG9jK0dUNscDdV5UYWadgWhtNJdguA7HFUYJ1xO8wnpZr5A5p7fS5G6w9glcuURzxx+NrqCV3V9m5XO7X4LPX6qglYFONAHP2KaZNaZeMP8ZJK915TIuel7bSsnPi8WmyWTCp5CM5P3tWCR3wzGILEsmXG4ymfHJhMXNUwbL5HpV62y6gzMzXXCDW9b+QQYLx8u469Lx/UJ9FLanT5nMroUDMC91hLZDHhwmwUcpH6XC/qwhBGXitNkpZdqKHcj0EiiNlT4eguNpFyVlpXq3gSwpm8VfRsrIfNnklYN3BXtK3gY7s/NfUEsDBBQAAAgIAAAIIexDq+wzbwIAACMFAAALACQAZ3JhcGgxLmpzb24KACAAAAAAAAEAGAAAgD7V3rGdAQCAPtXesZ0BAIA+1d6xnQFlVE1z2jAQ/SuMzk3GhoBxb62TkB6SMKWdXHwR9hprkCWPPgIkw3/vSpaxQ08sb/ftvv2QPwkTuoXCSLVSrHyWJZDvE+Js8m0yOJ/gSHdSbNgH9DFvrDS1C6I+5jc1TCIeO5qWDRjFih9ix11whKAVrJKqeSh3kEltNMIV5RrQpaRxbIHQ54Qc8ecmdZQTWtPEWR9opdHkjGYBwoAaQqPbZDmPk8UsEOL4Nk3j5exuEXgdzYqC06aF0vUwsJfxIvDmcRcosL8Q41IWknOmgzhiTq1vPqOtttgaBpSMYrNekeu9BrarjRM+Jr9WlQYTJqHo6Z4pnFmXlfyU3SAbqvedsnfKLVykdymf//PexN5dKdk89VXjyFUwNSv2v+mpoNqM5jyG77/KtuJA+Z5uObzVIF7kSkkrSnQaZR3VapjeD38vjWU1FPtRiU5rj/bkdrSuMO5+q66Js2/+mHHWbP1G7zpgw6Uftz8GULiYX6jYn4oOKRB1Mv5q+EN345sKjkemtEFXaFM4eVtplQslj2i4wRfWZFIJ8GjQ3IKg3JzWmMVcL/DKN6p65Xmk7vGE2sHXv4krioeH+Ci6cq3l4bIsXcvDM+j61RrOBAyineMFx5RJIbr7Go+kp22sqmgxou0sK7+eFlmmSRIlyWK6jZNomtCbYjar5vMkTWB2t5xHKfG3xwT2Sfm6ExrGg0sTQ3KBd9Z/UyYrRVt/66WihxX7aORo5ExUclMoAPHaZbgIB4VF8E2WDyXDAW3AGCb8uslnTrgs9lDml0S57/ThaBTNhyw5adm7NA7JSeY/Ijlx8OWW1wreGRxc8T7ZmZz/AVBLAwQUAAAICAAACCHsEWBXiosAAAC2AAAACQAkAG1ldGEuanNvbgoAIAAAAAAAAQAYAACAPtXesZ0BAIA+1d6xnQEAgD7V3rGdAW2Nyw6CMBBFf4V0LaSvcab+ADvj3rAYaAtdiATQxBj/3TZu3d3Hyb1v8Qzrlu6zOFW20Y3CQyXGlZdpy4ku5pF80VfhgIhdAOnRqAFsrcIQIxD7PvrIRCLj5BAl4lH3CqVGrgdjIgA6DMYSSCe6TO2vJZz5Fn7DF96nmGaf5rFp1+Tb8l/G/hfd5wtQSwECLQAUAAAICAAACCHss0jKWFwCAAARBQAACwAkAAAAAAAAAAAAAAAAAAAAZ3JhcGgwLmpzb24KACAAAAAAAAEAGAAAgD7V3rGdAQCAPtXesZ0BAIA+1d6xnQFQSwECLQAUAAAICAAACCHsQ6vsM28CAAAjBQAACwAkAAAAAAAAAAAAAACpAgAAZ3JhcGgxLmpzb24KACAAAAAAAAEAGAAAgD7V3rGdAQCAPtXesZ0BAIA+1d6xnQFQSwECLQAUAAAICAAACCHsEWBXiosAAAC2AAAACQAkAAAAAAAAAAAAAABlBQAAbWV0YS5qc29uCgAgAAAAAAABABgAAIA+1d6xnQEAgD7V3rGdAQCAPtXesZ0BUEsFBgAAAAADAAMAFQEAADsGAAAAAA== + upgradeData: + file_cachedStartup: {fileID: 0} + data_cachedStartup: + cacheStartup: 0 + showNavGraphs: 0 + showUnwalkableNodes: 1 + debugMode: 0 + debugFloor: 0 + debugRoof: 1 + manualDebugFloorRoof: 0 + showSearchTree: 0 + unwalkableNodeDebugSize: 0.3 + logPathResults: 1 + maxNearestNodeDistance: 100 + scanOnStartup: 1 + fullGetNearestSearch: 0 + prioritizeGraphs: 0 + prioritizeGraphsLimit: 1 + colorSettings: + _SolidColor: {r: 0.11764706, g: 0.4, b: 0.7882353, a: 0.9} + _UnwalkableNode: {r: 1, g: 0, b: 0, a: 0.5} + _BoundsHandles: {r: 0.29, g: 0.454, b: 0.741, a: 0.9} + _ConnectionLowLerp: {r: 0, g: 1, b: 0, a: 0.5} + _ConnectionHighLerp: {r: 1, g: 0, b: 0, a: 0.5} + _MeshEdgeColor: {r: 0, g: 0, b: 0, a: 0.5} + _AreaColors: + - {r: 0, g: 0, b: 0, a: 0} + tagNames: + - Basic Ground + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + - 18 + - 19 + - 20 + - 21 + - 22 + - 23 + - 24 + - 25 + - 26 + - 27 + - 28 + - 29 + - 30 + - 31 + heuristic: 2 + heuristicScale: 1 + threadCount: 1 + maxFrameTime: 10 + batchGraphUpdates: 0 + graphUpdateBatchingInterval: 0.2 + euclideanEmbedding: + mode: 0 + seed: 0 + pivotPointRoot: {fileID: 0} + spreadOutCount: 1 + showGraphs: 1 +--- !u!4 &965871069 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 965871067} + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1067270700 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1067270703} + - component: {fileID: 1067270702} + - component: {fileID: 1067270701} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1067270701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067270700} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.InputSystem::UnityEngine.InputSystem.UI.InputSystemUIInputModule + m_SendPointerHoverToParent: 1 + m_MoveRepeatDelay: 0.5 + m_MoveRepeatRate: 0.1 + m_XRTrackingOrigin: {fileID: 0} + m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} + m_DeselectOnBackgroundClick: 1 + m_PointerBehavior: 0 + m_CursorLockBehavior: 0 + m_ScrollDeltaPerTick: 6 +--- !u!114 &1067270702 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067270700} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.EventSystems.EventSystem + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1067270703 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067270700} + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1296503940 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6259373434446242904, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_Name + value: RevealableObject_Full_2 + objectReference: {fileID: 0} + - target: {fileID: 6487644332527623320, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_SortingOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalPosition.x + value: 13.64 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalPosition.y + value: -0.34 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} +--- !u!1001 &1399896129 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6259373434446242904, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_Name + value: RevealableObject_Full + objectReference: {fileID: 0} + - target: {fileID: 6487644332527623320, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_SortingOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalPosition.x + value: -13.47 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalPosition.y + value: 0.57 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} +--- !u!1 &1740309994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1740309999} + - component: {fileID: 1740309998} + - component: {fileID: 1740309997} + - component: {fileID: 1740309996} + - component: {fileID: 1740309995} + m_Layer: 0 + m_Name: CinemachineCamera + m_TagString: MainCinemachineCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1740309995 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740309994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 00b2d199b96b516448144ab30fb26aed, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.Cinemachine::Unity.Cinemachine.CinemachineImpulseListener + ApplyAfter: 2 + ChannelMask: 1 + Gain: 1 + Use2DDistance: 0 + UseCameraSpace: 1 + SignalCombinationMode: 0 + ReactionSettings: + m_SecondaryNoise: {fileID: 0} + AmplitudeGain: 1 + FrequencyGain: 1 + Duration: 1 + m_NoiseOffsets: {x: 0, y: 0, z: 0} +--- !u!114 &1740309996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740309994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f453f694addf4275988fac205bc91968, type: 3} + m_Name: + m_EditorClassIdentifier: + BoundingShape2D: {fileID: 0} + Damping: 3 + SlowingDistance: 20 + OversizeWindow: + Enabled: 0 + MaxWindowSize: 0 + Padding: 0 + m_LegacyMaxWindowSize: -2 +--- !u!114 &1740309997 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740309994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b617507da6d07e749b7efdb34e1173e1, type: 3} + m_Name: + m_EditorClassIdentifier: + TrackerSettings: + BindingMode: 4 + PositionDamping: {x: 2, y: 0.5, z: 1} + AngularDampingMode: 0 + RotationDamping: {x: 1, y: 1, z: 1} + QuaternionDamping: 1 + FollowOffset: {x: 0, y: 0, z: -10} +--- !u!114 &1740309998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740309994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f9dfa5b682dcd46bda6128250e975f58, type: 3} + m_Name: + m_EditorClassIdentifier: + Priority: + Enabled: 0 + m_Value: 0 + OutputChannel: 1 + StandbyUpdate: 2 + m_StreamingVersion: 20241001 + m_LegacyPriority: 0 + Target: + TrackingTarget: {fileID: 0} + LookAtTarget: {fileID: 0} + CustomLookAtTarget: 0 + Lens: + FieldOfView: 60 + OrthographicSize: 20 + NearClipPlane: 0.3 + FarClipPlane: 1000 + Dutch: 0 + ModeOverride: 0 + PhysicalProperties: + GateFit: 2 + SensorSize: {x: 21.946, y: 16.002} + LensShift: {x: 0, y: 0} + FocusDistance: 10 + Iso: 200 + ShutterSpeed: 0.005 + Aperture: 16 + BladeCount: 5 + Curvature: {x: 2, y: 11} + BarrelClipping: 0.25 + Anamorphism: 0 + BlendHint: 0 +--- !u!4 &1740309999 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740309994} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1988479732 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1988479733} + m_Layer: 0 + m_Name: FinishPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1988479733 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1988479732} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2.8, y: 32.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 428838008} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1992720286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1992720291} + - component: {fileID: 1992720290} + - component: {fileID: 1992720289} + - component: {fileID: 1992720288} + - component: {fileID: 1992720287} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1992720287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1992720286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 + m_Version: 2 +--- !u!114 &1992720288 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1992720286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 72ece51f2901e7445ab60da3685d6b5f, type: 3} + m_Name: + m_EditorClassIdentifier: + ShowDebugText: 0 + ShowCameraFrustum: 1 + IgnoreTimeScale: 0 + WorldUpOverride: {fileID: 0} + ChannelMask: -1 + UpdateMethod: 2 + BlendUpdateMethod: 1 + LensModeOverride: + Enabled: 0 + DefaultMode: 2 + DefaultBlend: + Style: 1 + Time: 1 + CustomCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + CustomBlends: {fileID: 0} +--- !u!81 &1992720289 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1992720286} + m_Enabled: 1 +--- !u!20 &1992720290 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1992720286} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 20 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1992720291 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1992720286} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &3227266997639691951 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 20851209822974582, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_Name + value: MazeBackground + objectReference: {fileID: 0} + - target: {fileID: 6548959094921542577, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_SortingLayer + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 6548959094921542577, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_SortingOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 6548959094921542577, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_SortingLayerID + value: 622133659 + objectReference: {fileID: 0} + - target: {fileID: 8861526539906903110, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8861526539906903110, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_LocalPosition.y + value: 10.8 + objectReference: {fileID: 0} + - target: {fileID: 8861526539906903110, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8861526539906903110, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8861526539906903110, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8861526539906903110, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8861526539906903110, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8861526539906903110, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8861526539906903110, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8861526539906903110, guid: fe50f047edb550d4986d997281ffc47a, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: fe50f047edb550d4986d997281ffc47a, type: 3} +--- !u!1001 &8863403829449978364 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 397845239581813408, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: revealMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6259373434446242904, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_Name + value: RevealableObject_Partial + objectReference: {fileID: 0} + - target: {fileID: 6487644332527623320, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_SortingOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 6487644332527623320, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 6e053220514a0c64883d9484863533fe, type: 2} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalPosition.y + value: 10.99 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7983424933738472089, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 07f826f001311e04984c3efc9ee2b897, type: 3} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1992720291} + - {fileID: 1740309999} + - {fileID: 200221578} + - {fileID: 428838008} + - {fileID: 1067270703} + - {fileID: 965871069} + - {fileID: 3227266997639691951} + - {fileID: 8863403829449978364} + - {fileID: 1399896129} + - {fileID: 1296503940} diff --git a/Assets/Scenes/TestingStuff/MichalTesting_TrashMaze.unity.meta b/Assets/Scenes/TestingStuff/MichalTesting_TrashMaze.unity.meta new file mode 100644 index 00000000..e67af6df --- /dev/null +++ b/Assets/Scenes/TestingStuff/MichalTesting_TrashMaze.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 42351c9e3e21b3040848acd45b1d7626 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/CardSystem/UI/Pages/AlbumViewPage.cs b/Assets/Scripts/CardSystem/UI/Pages/AlbumViewPage.cs index e303c85d..7ce03503 100644 --- a/Assets/Scripts/CardSystem/UI/Pages/AlbumViewPage.cs +++ b/Assets/Scripts/CardSystem/UI/Pages/AlbumViewPage.cs @@ -452,7 +452,6 @@ namespace UI.CardSystem if (cardData == null) return null; var allSlots = FindObjectsByType(FindObjectsSortMode.None); - foreach (var slot in allSlots) { if (slot.TargetCardDefinition != null && diff --git a/Assets/Scripts/Core/GameManager.cs b/Assets/Scripts/Core/GameManager.cs index 545e3370..fc552a65 100644 --- a/Assets/Scripts/Core/GameManager.cs +++ b/Assets/Scripts/Core/GameManager.cs @@ -182,7 +182,7 @@ namespace Core // Register settings with service locator if (playerSettings != null) { - ServiceLocator.Register(playerSettings); + ServiceLocator.Register(playerSettings); Logging.Debug("PlayerFollowerSettings registered successfully"); } else diff --git a/Assets/Scripts/Core/Settings/PlayerFollowerSettings.cs b/Assets/Scripts/Core/Settings/PlayerFollowerSettings.cs index 2d25d74d..60e8f8ec 100644 --- a/Assets/Scripts/Core/Settings/PlayerFollowerSettings.cs +++ b/Assets/Scripts/Core/Settings/PlayerFollowerSettings.cs @@ -3,37 +3,79 @@ namespace AppleHills.Core.Settings { /// - /// Settings related to player and follower behavior + /// Settings related to player and follower behavior. + /// Implements IPlayerMovementConfigs to provide separate configurations for different movement contexts. /// [CreateAssetMenu(fileName = "PlayerFollowerSettings", menuName = "AppleHills/Settings/Player & Follower", order = 1)] - public class PlayerFollowerSettings : BaseSettings, IPlayerFollowerSettings + public class PlayerFollowerSettings : BaseSettings, IPlayerMovementConfigs + { + [Header("Default Player Movement (Overworld)")] + [SerializeField] private PlayerMovementSettingsData defaultPlayerMovement = new PlayerMovementSettingsData(); + + [Header("Trash Maze - Pulver Movement")] + [SerializeField] private PlayerMovementSettingsData trashMazeMovement = new PlayerMovementSettingsData(); + + [Header("Follower Settings")] + [SerializeField] private FollowerSettingsData followerMovement = new FollowerSettingsData(); + + // IPlayerMovementConfigs implementation + public IPlayerMovementSettings DefaultPlayerMovement => defaultPlayerMovement; + public IPlayerMovementSettings TrashMazeMovement => trashMazeMovement; + public IFollowerSettings FollowerMovement => followerMovement; + + public override void OnValidate() + { + base.OnValidate(); + defaultPlayerMovement?.Validate(); + trashMazeMovement?.Validate(); + followerMovement?.Validate(); + } + } + + /// + /// Serializable data for player movement settings + /// + [System.Serializable] + public class PlayerMovementSettingsData : IPlayerMovementSettings { - [Header("Player Settings")] [SerializeField] private float moveSpeed = 5f; - [SerializeField] private float moveAcceleration = 10000f; + [SerializeField] private float maxAcceleration = 10000f; [SerializeField] private float stopDistance = 0.1f; [SerializeField] private bool useRigidbody = true; [SerializeField] private HoldMovementMode defaultHoldMovementMode = HoldMovementMode.Pathfinding; - [Header("Follower Settings")] + public float MoveSpeed => moveSpeed; + public float MaxAcceleration => maxAcceleration; + public float StopDistance => stopDistance; + public bool UseRigidbody => useRigidbody; + public HoldMovementMode DefaultHoldMovementMode => defaultHoldMovementMode; + + public void Validate() + { + moveSpeed = Mathf.Max(0.1f, moveSpeed); + maxAcceleration = Mathf.Max(0.1f, maxAcceleration); + stopDistance = Mathf.Max(0.01f, stopDistance); + } + } + + /// + /// Serializable data for follower settings + /// + [System.Serializable] + public class FollowerSettingsData : IFollowerSettings + { [SerializeField] private float followDistance = 1.5f; [SerializeField] private float manualMoveSmooth = 8f; [SerializeField] private float thresholdFar = 2.5f; [SerializeField] private float thresholdNear = 0.5f; [SerializeField] private float stopThreshold = 0.1f; - - [Header("Backend Settings")] - [Tooltip("Technical parameters, not for design tuning")] [SerializeField] private float followUpdateInterval = 0.1f; [SerializeField] private float followerSpeedMultiplier = 1.2f; [SerializeField] private float heldIconDisplayHeight = 2.0f; + + [Header("Trash Maze Vision")] + [SerializeField] private float trashMazeVisionRadius = 8f; - // IPlayerFollowerSettings implementation - public float MoveSpeed => moveSpeed; - public float MaxAcceleration => moveAcceleration; - public float StopDistance => stopDistance; - public bool UseRigidbody => useRigidbody; - public HoldMovementMode DefaultHoldMovementMode => defaultHoldMovementMode; public float FollowDistance => followDistance; public float ManualMoveSmooth => manualMoveSmooth; public float ThresholdFar => thresholdFar; @@ -42,14 +84,19 @@ namespace AppleHills.Core.Settings public float FollowUpdateInterval => followUpdateInterval; public float FollowerSpeedMultiplier => followerSpeedMultiplier; public float HeldIconDisplayHeight => heldIconDisplayHeight; - - public override void OnValidate() + public float TrashMazeVisionRadius => trashMazeVisionRadius; + + public void Validate() { - base.OnValidate(); - // Validate values - moveSpeed = Mathf.Max(0.1f, moveSpeed); followDistance = Mathf.Max(0.1f, followDistance); + manualMoveSmooth = Mathf.Max(0.1f, manualMoveSmooth); + thresholdFar = Mathf.Max(0.1f, thresholdFar); + thresholdNear = Mathf.Max(0.01f, thresholdNear); + stopThreshold = Mathf.Max(0.01f, stopThreshold); + followUpdateInterval = Mathf.Max(0.01f, followUpdateInterval); followerSpeedMultiplier = Mathf.Max(0.1f, followerSpeedMultiplier); + heldIconDisplayHeight = Mathf.Max(0f, heldIconDisplayHeight); + trashMazeVisionRadius = Mathf.Max(1f, trashMazeVisionRadius); } } } diff --git a/Assets/Scripts/Core/Settings/SettingsInterfaces.cs b/Assets/Scripts/Core/Settings/SettingsInterfaces.cs index c5c369cc..ffb4ec92 100644 --- a/Assets/Scripts/Core/Settings/SettingsInterfaces.cs +++ b/Assets/Scripts/Core/Settings/SettingsInterfaces.cs @@ -14,18 +14,33 @@ namespace AppleHills.Core.Settings } /// - /// Interface for player and follower settings + /// Interface for player movement settings (used by all player controllers) /// - public interface IPlayerFollowerSettings + public interface IPlayerMovementSettings { - // Player settings float MoveSpeed { get; } - float MaxAcceleration { get; } // Added new property for player acceleration + float MaxAcceleration { get; } float StopDistance { get; } bool UseRigidbody { get; } HoldMovementMode DefaultHoldMovementMode { get; } - - // Follower settings + } + + /// + /// Container interface that holds multiple player movement configurations. + /// Allows different controllers to use the same base settings interface with different values. + /// + public interface IPlayerMovementConfigs + { + IPlayerMovementSettings DefaultPlayerMovement { get; } + IPlayerMovementSettings TrashMazeMovement { get; } + IFollowerSettings FollowerMovement { get; } + } + + /// + /// Interface for follower-specific settings (completely separate from player movement) + /// + public interface IFollowerSettings + { float FollowDistance { get; } float ManualMoveSmooth { get; } float ThresholdFar { get; } @@ -34,6 +49,7 @@ namespace AppleHills.Core.Settings float FollowUpdateInterval { get; } float FollowerSpeedMultiplier { get; } float HeldIconDisplayHeight { get; } + float TrashMazeVisionRadius { get; } } /// diff --git a/Assets/Scripts/Input/BasePlayerMovementController.cs b/Assets/Scripts/Input/BasePlayerMovementController.cs new file mode 100644 index 00000000..d4c61760 --- /dev/null +++ b/Assets/Scripts/Input/BasePlayerMovementController.cs @@ -0,0 +1,330 @@ +using UnityEngine; +using Pathfinding; +using AppleHills.Core.Settings; +using Core; +using Core.Lifecycle; + +namespace Input +{ + /// + /// Base class for player movement controllers. + /// Handles tap-to-move and hold-to-move input with pathfinding or direct movement. + /// Derived classes can override to add specialized behavior (e.g., shader updates). + /// + public abstract class BasePlayerMovementController : ManagedBehaviour, ITouchInputConsumer + { + [Header("Movement")] + [SerializeField] protected float moveSpeed = 5f; + + [Header("Collision Simulation")] + [SerializeField] protected LayerMask obstacleMask; + [SerializeField] protected float colliderRadius = 0.5f; + + // Movement state + protected Vector3 _targetPosition; + protected Vector3 _directMoveVelocity; + protected bool _isHolding; + protected Vector2 _lastHoldPosition; + protected Coroutine _pathfindingDragCoroutine; + protected float _pathfindingDragUpdateInterval = 0.1f; + + // Settings reference (populated by derived classes in LoadSettings) + protected IPlayerMovementSettings _movementSettings; + protected IPlayerMovementSettings Settings => _movementSettings; + + // Abstract method for derived classes to load their specific settings + protected abstract void LoadSettings(); + + // Movement tracking + protected bool _isMoving; + public bool IsMoving => _isMoving; + public bool IsHolding => _isHolding; + public event System.Action OnMovementStarted; + public event System.Action OnMovementStopped; + + // Components + protected AIPath _aiPath; + protected Animator _animator; + protected Transform _artTransform; + protected SpriteRenderer _spriteRenderer; + + // Animation tracking + protected Vector3 _lastDirectMoveDir = Vector3.right; + public Vector3 LastDirectMoveDir => _lastDirectMoveDir; + protected float _lastDirX; + protected float _lastDirY = -1f; + + protected LogVerbosity _logVerbosity = LogVerbosity.Warning; + + internal override void OnManagedAwake() + { + base.OnManagedAwake(); + LoadSettings(); // Let derived class load appropriate settings + InitializeComponents(); + } + + internal override void OnManagedStart() + { + base.OnManagedStart(); + + // Register with InputManager + if (InputManager.Instance != null) + { + InputManager.Instance.SetDefaultConsumer(this); + Logging.Debug($"[{GetType().Name}] Registered as default input consumer"); + } + + _logVerbosity = DeveloperSettingsProvider.Instance.GetSettings().inputLogVerbosity; + } + + protected virtual void InitializeComponents() + { + _aiPath = GetComponent(); + _artTransform = transform.Find("CharacterArt"); + if (_artTransform != null) + _animator = _artTransform.GetComponent(); + else + _animator = GetComponentInChildren(); + + if (_artTransform != null) + _spriteRenderer = _artTransform.GetComponent(); + if (_spriteRenderer == null) + _spriteRenderer = GetComponentInChildren(); + } + + protected virtual void Update() + { + UpdateMovementState(); + UpdateAnimation(); + } + + #region ITouchInputConsumer Implementation + + public virtual void OnTap(Vector2 worldPosition) + { + Logging.Debug($"[{GetType().Name}] OnTap at {worldPosition}"); + if (_aiPath != null) + { + _aiPath.enabled = true; + _aiPath.canMove = true; + _aiPath.isStopped = false; + SetTargetPosition(worldPosition); + _directMoveVelocity = Vector3.zero; + _isHolding = false; + } + } + + public virtual void OnHoldStart(Vector2 worldPosition) + { + Logging.Debug($"[{GetType().Name}] OnHoldStart at {worldPosition}"); + _lastHoldPosition = worldPosition; + _isHolding = true; + + if (Settings.DefaultHoldMovementMode == HoldMovementMode.Pathfinding && _aiPath != null) + { + _aiPath.enabled = true; + if (_pathfindingDragCoroutine != null) StopCoroutine(_pathfindingDragCoroutine); + _pathfindingDragCoroutine = StartCoroutine(PathfindingDragUpdateCoroutine()); + } + else // Direct movement + { + if (_aiPath != null) _aiPath.enabled = false; + _directMoveVelocity = Vector3.zero; + } + } + + public virtual void OnHoldUpdate(Vector2 worldPosition) + { + if (!_isHolding) return; + _lastHoldPosition = worldPosition; + + if (Settings.DefaultHoldMovementMode == HoldMovementMode.Direct) + { + if (_aiPath != null && _aiPath.enabled) _aiPath.enabled = false; + MoveDirectlyTo(worldPosition); + } + } + + public virtual void OnHoldMove(Vector2 worldPosition) + { + // Alias for OnHoldUpdate for interface compatibility + OnHoldUpdate(worldPosition); + } + + public virtual void OnHoldEnd(Vector2 worldPosition) + { + Logging.Debug($"[{GetType().Name}] OnHoldEnd at {worldPosition}"); + _isHolding = false; + _directMoveVelocity = Vector3.zero; + + if (_aiPath != null && Settings.DefaultHoldMovementMode == HoldMovementMode.Pathfinding) + { + if (_pathfindingDragCoroutine != null) + { + StopCoroutine(_pathfindingDragCoroutine); + _pathfindingDragCoroutine = null; + } + } + + if (_aiPath != null && Settings.DefaultHoldMovementMode == HoldMovementMode.Direct) + { + _aiPath.enabled = false; + } + } + + #endregion + + #region Movement Methods + + protected virtual void SetTargetPosition(Vector2 worldPosition) + { + if (_aiPath != null) + { + _aiPath.destination = worldPosition; + _aiPath.maxSpeed = Settings.MoveSpeed; + _aiPath.maxAcceleration = Settings.MaxAcceleration; + _aiPath.canMove = true; + _aiPath.isStopped = false; + } + } + + protected virtual void MoveDirectlyTo(Vector2 worldPosition) + { + if (_aiPath == null) return; + + Vector3 current = transform.position; + Vector3 target = new Vector3(worldPosition.x, worldPosition.y, current.z); + Vector3 toTarget = (target - current); + Vector3 direction = toTarget.normalized; + + float maxSpeed = Settings.MoveSpeed; + float acceleration = Settings.MaxAcceleration; + + _directMoveVelocity = Vector3.MoveTowards(_directMoveVelocity, direction * maxSpeed, acceleration * Time.deltaTime); + if (_directMoveVelocity.magnitude > maxSpeed) + { + _directMoveVelocity = _directMoveVelocity.normalized * maxSpeed; + } + + Vector3 move = _directMoveVelocity * Time.deltaTime; + if (move.magnitude > toTarget.magnitude) + { + move = toTarget; + } + + // Collision simulation + Vector3 adjustedVelocity = AdjustVelocityForObstacles(current, _directMoveVelocity); + Vector3 adjustedMove = adjustedVelocity * Time.deltaTime; + if (adjustedMove.magnitude > toTarget.magnitude) + { + adjustedMove = toTarget; + } + + transform.position += adjustedMove; + _lastDirectMoveDir = _directMoveVelocity.normalized; + } + + protected virtual Vector3 AdjustVelocityForObstacles(Vector3 position, Vector3 velocity) + { + if (velocity.sqrMagnitude < 0.0001f) + return velocity; + + float moveDistance = velocity.magnitude * Time.deltaTime; + Vector2 origin = new Vector2(position.x, position.y); + Vector2 dir = velocity.normalized; + float rayLength = colliderRadius + moveDistance; + + RaycastHit2D hit = Physics2D.Raycast(origin, dir, rayLength, obstacleMask); + + if (hit.collider != null) + { + Vector2 tangent = new Vector2(-hit.normal.y, hit.normal.x); + float slideAmount = Vector2.Dot(velocity, tangent); + Vector3 slideVelocity = tangent * slideAmount; + return slideVelocity; + } + + return velocity; + } + + protected virtual System.Collections.IEnumerator PathfindingDragUpdateCoroutine() + { + while (_isHolding && _aiPath != null) + { + SetTargetPosition(_lastHoldPosition); + yield return new WaitForSeconds(_pathfindingDragUpdateInterval); + } + } + + #endregion + + #region State and Animation + + protected virtual void UpdateMovementState() + { + bool isCurrentlyMoving = false; + + if (_isHolding && Settings.DefaultHoldMovementMode == HoldMovementMode.Direct) + { + isCurrentlyMoving = _directMoveVelocity.sqrMagnitude > 0.001f; + } + else if (_aiPath != null && _aiPath.enabled) + { + isCurrentlyMoving = _aiPath.velocity.sqrMagnitude > 0.001f; + } + + if (isCurrentlyMoving && !_isMoving) + { + _isMoving = true; + OnMovementStarted?.Invoke(); + Logging.Debug($"[{GetType().Name}] Movement started"); + } + else if (!isCurrentlyMoving && _isMoving) + { + _isMoving = false; + OnMovementStopped?.Invoke(); + Logging.Debug($"[{GetType().Name}] Movement stopped"); + } + } + + protected virtual void UpdateAnimation() + { + if (_animator == null || _aiPath == null) return; + + float normalizedSpeed = 0f; + Vector3 velocity = Vector3.zero; + float maxSpeed = Settings.MoveSpeed; + + if (_isHolding && Settings.DefaultHoldMovementMode == HoldMovementMode.Direct) + { + normalizedSpeed = _directMoveVelocity.magnitude / maxSpeed; + velocity = _directMoveVelocity; + } + else if (_aiPath.enabled) + { + normalizedSpeed = _aiPath.velocity.magnitude / maxSpeed; + velocity = _aiPath.velocity; + } + + _animator.SetFloat("Speed", Mathf.Clamp01(normalizedSpeed)); + + if (velocity.sqrMagnitude > 0.01f) + { + Vector3 normalizedVelocity = velocity.normalized; + _lastDirX = normalizedVelocity.x; + _lastDirY = normalizedVelocity.y; + + _animator.SetFloat("DirX", _lastDirX); + _animator.SetFloat("DirY", _lastDirY); + } + else + { + _animator.SetFloat("DirX", _lastDirX); + _animator.SetFloat("DirY", _lastDirY); + } + } + + #endregion + } +} + diff --git a/Assets/Scripts/Input/BasePlayerMovementController.cs.meta b/Assets/Scripts/Input/BasePlayerMovementController.cs.meta new file mode 100644 index 00000000..ac6cd320 --- /dev/null +++ b/Assets/Scripts/Input/BasePlayerMovementController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 059db1587c2c42389f98a1d3a52bec4b +timeCreated: 1765206060 \ No newline at end of file diff --git a/Assets/Scripts/Input/PlayerTouchController.cs b/Assets/Scripts/Input/PlayerTouchController.cs index 39950db1..e2c7d426 100644 --- a/Assets/Scripts/Input/PlayerTouchController.cs +++ b/Assets/Scripts/Input/PlayerTouchController.cs @@ -1,8 +1,6 @@ using UnityEngine; -using Pathfinding; using AppleHills.Core.Settings; using Core; -using Core.Lifecycle; namespace Input { @@ -19,341 +17,43 @@ namespace Input /// /// Handles player movement in response to tap and hold input events. /// Supports both direct and pathfinding movement modes, and provides event/callbacks for arrival/cancellation. + /// Extends BasePlayerMovementController with save/load and MoveToAndNotify functionality. /// - public class PlayerTouchController : ManagedBehaviour, ITouchInputConsumer + public class PlayerTouchController : BasePlayerMovementController { - // --- Movement State --- - private Vector3 targetPosition; - private Vector3 directMoveVelocity; // default is Vector3.zero - internal bool isHolding; - private Vector2 lastHoldPosition; - private Coroutine pathfindingDragCoroutine; - private float pathfindingDragUpdateInterval = 0.1f; // Interval in seconds - [Header("Collision Simulation")] - public LayerMask obstacleMask; - public float colliderRadius = 0.5f; - - // --- Settings Reference --- - private IPlayerFollowerSettings _settings; - - // --- Movement Events --- - private bool _isMoving = false; - public bool IsMoving => _isMoving; - public event System.Action OnMovementStarted; - public event System.Action OnMovementStopped; - - // --- Unity/Component References --- - private AIPath aiPath; - - // Note: String-based property lookup is flagged as inefficient, but is common in Unity for dynamic children. - private Animator animator; - private Transform artTransform; - private SpriteRenderer spriteRenderer; - - // --- Last direct movement direction --- - private Vector3 _lastDirectMoveDir = Vector3.right; - public Vector3 LastDirectMoveDir => _lastDirectMoveDir; - - // --- Last movement directions for animation blend tree --- - private float _lastDirX = 0f; // -1 (left) to 1 (right) - private float _lastDirY = -1f; // -1 (down) to 1 (up) - - // --- MoveToAndNotify State --- + // --- PlayerTouchController-specific features (MoveToAndNotify) --- public delegate void ArrivedAtTargetHandler(); - private Coroutine moveToCoroutine; + private Coroutine _moveToCoroutine; public event ArrivedAtTargetHandler OnArrivedAtTarget; public event System.Action OnMoveToCancelled; - private bool interruptMoveTo; - private LogVerbosity _logVerbosity = LogVerbosity.Warning; + private bool _interruptMoveTo; // Save system configuration public override bool AutoRegisterForSave => true; // Scene-specific SaveId - each level has its own player state public override string SaveId => $"{gameObject.scene.name}/PlayerController"; - internal override void OnManagedStart() + protected override void LoadSettings() { - aiPath = GetComponent(); - artTransform = transform.Find("CharacterArt"); - if (artTransform != null) - animator = artTransform.GetComponent(); - else - animator = GetComponentInChildren(); - // Cache SpriteRenderer for flipping - if (artTransform != null) - spriteRenderer = artTransform.GetComponent(); - if (spriteRenderer == null) - spriteRenderer = GetComponentInChildren(); - - // Initialize settings reference using GetSettingsObject - _settings = GameManager.GetSettingsObject(); - - // Set default input consumer - InputManager.Instance?.SetDefaultConsumer(this); - - _logVerbosity = DeveloperSettingsProvider.Instance.GetSettings().inputLogVerbosity; + var configs = GameManager.GetSettingsObject(); + _movementSettings = configs.DefaultPlayerMovement; } - /// - /// Handles tap input. Always uses pathfinding to move to the tapped location. - /// Cancels any in-progress MoveToAndNotify. - /// - public void OnTap(Vector2 worldPosition) + #region ITouchInputConsumer Overrides (Add InterruptMoveTo) + + public override void OnTap(Vector2 worldPosition) { InterruptMoveTo(); - Logging.Debug($"OnTap at {worldPosition}"); - if (aiPath != null) - { - aiPath.enabled = true; - aiPath.canMove = true; - aiPath.isStopped = false; - SetTargetPosition(worldPosition); - directMoveVelocity = Vector3.zero; - isHolding = false; - } + base.OnTap(worldPosition); } - - /// - /// Handles the start of a hold input. Begins tracking the finger and uses the correct movement mode. - /// Cancels any in-progress MoveToAndNotify. - /// - public void OnHoldStart(Vector2 worldPosition) + + public override void OnHoldStart(Vector2 worldPosition) { InterruptMoveTo(); - Logging.Debug($"OnHoldStart at {worldPosition}"); - lastHoldPosition = worldPosition; - isHolding = true; - if (_settings.DefaultHoldMovementMode == HoldMovementMode.Pathfinding && - aiPath != null) - { - aiPath.enabled = true; - if (pathfindingDragCoroutine != null) StopCoroutine(pathfindingDragCoroutine); - pathfindingDragCoroutine = StartCoroutine(PathfindingDragUpdateCoroutine()); - } - else // Direct movement - { - if (aiPath != null) aiPath.enabled = false; - directMoveVelocity = Vector3.zero; - } - } - - /// - /// Handles hold move input. Updates the target position for direct or pathfinding movement. - /// /// - public void OnHoldMove(Vector2 worldPosition) - { - if (!isHolding) return; - lastHoldPosition = worldPosition; - if (_settings.DefaultHoldMovementMode == HoldMovementMode.Direct) - { - if (aiPath != null && aiPath.enabled) aiPath.enabled = false; - MoveDirectlyTo(worldPosition); - } - // If pathfinding, coroutine will update destination - } - - /// - /// Handles the end of a hold input. Stops tracking and disables movement as needed. - /// - public void OnHoldEnd(Vector2 worldPosition) - { - Logging.Debug($"OnHoldEnd at {worldPosition}"); - isHolding = false; - directMoveVelocity = Vector3.zero; - if (aiPath != null && _settings.DefaultHoldMovementMode == - HoldMovementMode.Pathfinding) - { - if (pathfindingDragCoroutine != null) - { - StopCoroutine(pathfindingDragCoroutine); - pathfindingDragCoroutine = null; - } - } - - if (aiPath != null && _settings.DefaultHoldMovementMode == HoldMovementMode.Direct) - { - aiPath.enabled = false; - } - } - - /// - /// Sets the target position for pathfinding movement. - /// - private void SetTargetPosition(Vector2 worldPosition) - { - if (aiPath != null) - { - aiPath.destination = worldPosition; - // Apply both speed and acceleration from settings - aiPath.maxSpeed = _settings.MoveSpeed; - aiPath.maxAcceleration = _settings.MaxAcceleration; - aiPath.canMove = true; - aiPath.isStopped = false; - } - } - - /// - /// Moves the player directly towards the specified world position. - /// - public void MoveDirectlyTo(Vector2 worldPosition) - { - if (aiPath == null) - { - return; - } - Vector3 current = transform.position; - Vector3 target = new Vector3(worldPosition.x, worldPosition.y, current.z); - Vector3 toTarget = (target - current); - Vector3 direction = toTarget.normalized; - - // Get speed and acceleration directly from settings - float maxSpeed = _settings.MoveSpeed; - float acceleration = _settings.MaxAcceleration; - - directMoveVelocity = Vector3.MoveTowards(directMoveVelocity, direction * maxSpeed, acceleration * Time.deltaTime); - if (directMoveVelocity.magnitude > maxSpeed) - { - directMoveVelocity = directMoveVelocity.normalized * maxSpeed; - } - Vector3 move = directMoveVelocity * Time.deltaTime; - if (move.magnitude > toTarget.magnitude) - { - move = toTarget; - } - // --- Collision simulation --- - Vector3 adjustedVelocity = AdjustVelocityForObstacles(current, directMoveVelocity); - Vector3 adjustedMove = adjustedVelocity * Time.deltaTime; - if (adjustedMove.magnitude > toTarget.magnitude) - { - adjustedMove = toTarget; - } - transform.position += adjustedMove; - - // Cache the last direct movement direction - _lastDirectMoveDir = directMoveVelocity.normalized; - } - - /// - /// Simulates collision with obstacles by raycasting in the direction of velocity and projecting the velocity if a collision is detected. - /// - /// Player's current position. - /// Intended velocity for this frame. - /// Adjusted velocity after collision simulation. - private Vector3 AdjustVelocityForObstacles(Vector3 position, Vector3 velocity) - { - if (velocity.sqrMagnitude < 0.0001f) - return velocity; - float moveDistance = velocity.magnitude * Time.deltaTime; - Vector2 origin = new Vector2(position.x, position.y); - Vector2 dir = velocity.normalized; - float rayLength = colliderRadius + moveDistance; - RaycastHit2D hit = Physics2D.Raycast(origin, dir, rayLength, obstacleMask); - Debug.DrawLine(origin, origin + dir * rayLength, Color.red, 0.1f); - if (hit.collider != null) - { - // Draw normal and tangent for debug - Debug.DrawLine(hit.point, hit.point + hit.normal, Color.green, 0.2f); - Vector2 tangent = new Vector2(-hit.normal.y, hit.normal.x); - Debug.DrawLine(hit.point, hit.point + tangent, Color.blue, 0.2f); - // Project velocity onto tangent to simulate sliding - float slideAmount = Vector2.Dot(velocity, tangent); - Vector3 slideVelocity = tangent * slideAmount; - return slideVelocity; - } - return velocity; - } - - void Update() - { - UpdateMovementState(); - - if (animator != null && aiPath != null) - { - float normalizedSpeed = 0f; - Vector3 velocity = Vector3.zero; - float maxSpeed = _settings.MoveSpeed; - - if (isHolding && _settings.DefaultHoldMovementMode == HoldMovementMode.Direct) - { - normalizedSpeed = directMoveVelocity.magnitude / maxSpeed; - velocity = directMoveVelocity; - } - else if (aiPath.enabled) - { - normalizedSpeed = aiPath.velocity.magnitude / maxSpeed; - velocity = aiPath.velocity; - } - - // Set speed parameter as before - animator.SetFloat("Speed", Mathf.Clamp01(normalizedSpeed)); - - // Calculate and set X and Y directions for 2D blend tree - if (velocity.sqrMagnitude > 0.01f) - { - // Normalize the velocity vector to get direction - Vector3 normalizedVelocity = velocity.normalized; - - // Update the stored directions when actively moving - _lastDirX = normalizedVelocity.x; - _lastDirY = normalizedVelocity.y; - - // Set the animator parameters - animator.SetFloat("DirX", _lastDirX); - animator.SetFloat("DirY", _lastDirY); - } - else - { - // When not moving, keep using the last direction - animator.SetFloat("DirX", _lastDirX); - animator.SetFloat("DirY", _lastDirY); - } - } - } - - /// - /// Checks if the player is currently moving and fires appropriate events when movement state changes. - /// - private void UpdateMovementState() - { - bool isCurrentlyMoving = false; - - // Check direct movement - if (isHolding && _settings.DefaultHoldMovementMode == HoldMovementMode.Direct) - { - isCurrentlyMoving = directMoveVelocity.sqrMagnitude > 0.001f; - } - // Check pathfinding movement - else if (aiPath != null && aiPath.enabled) - { - isCurrentlyMoving = aiPath.velocity.sqrMagnitude > 0.001f; - } - - // Fire events only when state changes - if (isCurrentlyMoving && !_isMoving) - { - _isMoving = true; - OnMovementStarted?.Invoke(); - Logging.Debug("Movement started"); - } - else if (!isCurrentlyMoving && _isMoving) - { - _isMoving = false; - OnMovementStopped?.Invoke(); - Logging.Debug("Movement stopped"); - } - } - - /// - /// Coroutine for updating the AIPath destination during pathfinding hold movement. - /// - private System.Collections.IEnumerator PathfindingDragUpdateCoroutine() - { - while (isHolding && aiPath != null) - { - aiPath.destination = new Vector3(lastHoldPosition.x, lastHoldPosition.y, transform.position.z); - yield return new WaitForSeconds(pathfindingDragUpdateInterval); - } + base.OnHoldStart(worldPosition); } + + #endregion /// /// Moves the player to a specific target position and notifies via events when arrived or cancelled. @@ -362,20 +62,20 @@ namespace Input public void MoveToAndNotify(Vector3 target) { // Cancel any previous move-to coroutine - if (moveToCoroutine != null) + if (_moveToCoroutine != null) { - StopCoroutine(moveToCoroutine); + StopCoroutine(_moveToCoroutine); } - interruptMoveTo = false; + _interruptMoveTo = false; // Ensure pathfinding is enabled for MoveToAndNotify - if (aiPath != null) + if (_aiPath != null) { - aiPath.enabled = true; - aiPath.canMove = true; - aiPath.isStopped = false; + _aiPath.enabled = true; + _aiPath.canMove = true; + _aiPath.isStopped = false; } - moveToCoroutine = StartCoroutine(MoveToTargetCoroutine(target)); + _moveToCoroutine = StartCoroutine(MoveToTargetCoroutine(target)); } /// @@ -383,11 +83,11 @@ namespace Input /// public void InterruptMoveTo() { - interruptMoveTo = true; - isHolding = false; - directMoveVelocity = Vector3.zero; - if (_settings.DefaultHoldMovementMode == HoldMovementMode.Direct && aiPath != null) - aiPath.enabled = false; + _interruptMoveTo = true; + _isHolding = false; + _directMoveVelocity = Vector3.zero; + if (Settings.DefaultHoldMovementMode == HoldMovementMode.Direct && _aiPath != null) + _aiPath.enabled = false; OnMoveToCancelled?.Invoke(); } @@ -396,19 +96,19 @@ namespace Input /// private System.Collections.IEnumerator MoveToTargetCoroutine(Vector3 target) { - if (aiPath != null) + if (_aiPath != null) { - aiPath.destination = target; - aiPath.maxSpeed = _settings.MoveSpeed; - aiPath.maxAcceleration = _settings.MaxAcceleration; + _aiPath.destination = target; + _aiPath.maxSpeed = Settings.MoveSpeed; + _aiPath.maxAcceleration = Settings.MaxAcceleration; } - while (!interruptMoveTo) + while (!_interruptMoveTo) { Vector2 current2D = new Vector2(transform.position.x, transform.position.y); Vector2 target2D = new Vector2(target.x, target.y); float dist = Vector2.Distance(current2D, target2D); - if (dist <= _settings.StopDistance + 0.2f) + if (dist <= Settings.StopDistance + 0.2f) { break; } @@ -416,8 +116,8 @@ namespace Input yield return null; } - moveToCoroutine = null; - if (!interruptMoveTo) + _moveToCoroutine = null; + if (!_interruptMoveTo) { OnArrivedAtTarget?.Invoke(); } diff --git a/Assets/Scripts/Interactions/ItemSlot.cs b/Assets/Scripts/Interactions/ItemSlot.cs index 07fd8c8a..6fe5a4c4 100644 --- a/Assets/Scripts/Interactions/ItemSlot.cs +++ b/Assets/Scripts/Interactions/ItemSlot.cs @@ -64,7 +64,6 @@ namespace Interactions // Settings reference private IInteractionSettings interactionSettings; - private IPlayerFollowerSettings playerFollowerSettings; /// /// Read-only access to the current slotted item state. @@ -180,7 +179,6 @@ namespace Interactions // Initialize settings references interactionSettings = GameManager.GetSettingsObject(); - playerFollowerSettings = GameManager.GetSettingsObject(); } #if UNITY_EDITOR @@ -580,7 +578,8 @@ namespace Interactions slotRenderer.sprite = slottedData.mapSprite; // Scale sprite to desired height, preserve aspect ratio, compensate for parent scale - float desiredHeight = playerFollowerSettings?.HeldIconDisplayHeight ?? 2.0f; + var configs = GameManager.GetSettingsObject(); + float desiredHeight = configs?.FollowerMovement?.HeldIconDisplayHeight ?? 2.0f; var sprite = slottedData.mapSprite; float spriteHeight = sprite.bounds.size.y; Vector3 parentScale = slotRenderer.transform.parent != null diff --git a/Assets/Scripts/Minigames/TrashMaze.meta b/Assets/Scripts/Minigames/TrashMaze.meta new file mode 100644 index 00000000..f8ced11e --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Assets/Scripts/Minigames/TrashMaze/Core.meta b/Assets/Scripts/Minigames/TrashMaze/Core.meta new file mode 100644 index 00000000..09056619 --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Core.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Assets/Scripts/Minigames/TrashMaze/Core/PulverController.cs b/Assets/Scripts/Minigames/TrashMaze/Core/PulverController.cs new file mode 100644 index 00000000..43598a9a --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Core/PulverController.cs @@ -0,0 +1,91 @@ +using Core; +using UnityEngine; +using Input; +using AppleHills.Core.Settings; + +namespace Minigames.TrashMaze.Core +{ + /// + /// Controls Pulver character movement in the Trash Maze. + /// Inherits from BasePlayerMovementController for tap-to-move and hold-to-move. + /// Updates global shader properties for vision radius system. + /// + public class PulverController : BasePlayerMovementController + { + public static PulverController Instance { get; private set; } + + // Cached shader property IDs for performance + private static readonly int PlayerWorldPosID = Shader.PropertyToID("_PlayerWorldPos"); + private static readonly int VisionRadiusID = Shader.PropertyToID("_VisionRadius"); + + // Vision radius loaded from settings + private float _visionRadius; + + // Public accessors for other systems + public static Vector2 PlayerPosition => Instance != null ? Instance.transform.position : Vector2.zero; + public static float VisionRadius => Instance != null ? Instance._visionRadius : 8f; + + internal override void OnManagedAwake() + { + // Singleton pattern + if (Instance != null && Instance != this) + { + Logging.Warning("[PulverController] Duplicate instance detected. Destroying duplicate."); + Destroy(gameObject); + return; + } + + Instance = this; + + base.OnManagedAwake(); + + Logging.Debug("[PulverController] Initialized"); + } + + protected override void LoadSettings() + { + var configs = GameManager.GetSettingsObject(); + _movementSettings = configs.TrashMazeMovement; + + // Load vision radius from follower settings + _visionRadius = configs.FollowerMovement.TrashMazeVisionRadius; + Logging.Debug($"[PulverController] Loaded vision radius from settings: {_visionRadius}"); + } + + protected override void Update() + { + base.Update(); // Call base for movement and animation + + // Update global shader properties for vision system + UpdateShaderGlobals(); + } + + /// + /// Updates global shader properties used by visibility shaders + /// + private void UpdateShaderGlobals() + { + Shader.SetGlobalVector(PlayerWorldPosID, transform.position); + Shader.SetGlobalFloat(VisionRadiusID, _visionRadius); + } + + internal override void OnManagedDestroy() + { + base.OnManagedDestroy(); + + if (Instance == this) + { + Instance = null; + } + } + + /// + /// Set vision radius at runtime + /// + public void SetVisionRadius(float radius) + { + _visionRadius = Mathf.Max(0.1f, radius); + } + } +} + diff --git a/Assets/Scripts/Minigames/TrashMaze/Core/PulverController.cs.meta b/Assets/Scripts/Minigames/TrashMaze/Core/PulverController.cs.meta new file mode 100644 index 00000000..6356fbf2 --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Core/PulverController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Assets/Scripts/Minigames/TrashMaze/Core/TrashMazeController.cs b/Assets/Scripts/Minigames/TrashMaze/Core/TrashMazeController.cs new file mode 100644 index 00000000..0c9e33ab --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Core/TrashMazeController.cs @@ -0,0 +1,168 @@ +using Core; +using Core.Lifecycle; +using UnityEngine; + +namespace Minigames.TrashMaze.Core +{ + /// + /// Main controller for the Trash Maze minigame. + /// Initializes the vision system and manages game flow. + /// + public class TrashMazeController : ManagedBehaviour + { + public static TrashMazeController Instance { get; private set; } + + [Header("Player")] + [SerializeField] private PulverController pulverPrefab; + [SerializeField] private Transform startPosition; + + [Header("Background")] + [Tooltip("Background sprite renderer - world size and center are inferred from its bounds")] + [SerializeField] private SpriteRenderer backgroundRenderer; + + [Header("Exit")] + [SerializeField] private Transform exitPosition; + + // Cached shader property IDs for performance + private static readonly int WorldSizeID = Shader.PropertyToID("_WorldSize"); + private static readonly int WorldCenterID = Shader.PropertyToID("_WorldCenter"); + + private PulverController _pulverInstance; + private bool _mazeCompleted; + + internal override void OnManagedAwake() + { + base.OnManagedAwake(); + + // Singleton pattern + if (Instance != null && Instance != this) + { + Logging.Warning("[TrashMazeController] Duplicate instance detected. Destroying duplicate."); + Destroy(gameObject); + return; + } + + Instance = this; + } + + internal override void OnManagedStart() + { + base.OnManagedStart(); + + Logging.Debug("[TrashMazeController] Initializing Trash Maze"); + + InitializeMaze(); + } + + private void InitializeMaze() + { + // Infer world bounds from background renderer and set shader globals + ApplyBackgroundBoundsToShader(); + + // Spawn player + SpawnPulver(); + + Logging.Debug("[TrashMazeController] Trash Maze initialized"); + } + + /// + /// Automatically infers world size and center from the background sprite renderer bounds + /// and applies them to shader global properties. + /// This handles scaled, rotated, or transformed backgrounds correctly. + /// + private void ApplyBackgroundBoundsToShader() + { + if (backgroundRenderer == null) + { + Logging.Error("[TrashMazeController] Background renderer not assigned! World bounds cannot be inferred."); + Logging.Warning("[TrashMazeController] Using fallback bounds: size=(100,100), center=(0,0)"); + + // Fallback values + Shader.SetGlobalVector(WorldSizeID, new Vector4(100f, 100f, 0f, 0f)); + Shader.SetGlobalVector(WorldCenterID, new Vector4(0f, 0f, 0f, 0f)); + return; + } + + // Get the material instance (avoid modifying shared asset) + Material material = backgroundRenderer.material; + if (material == null) + { + Logging.Warning("[TrashMazeController] Background material missing on renderer."); + return; + } + + // Use renderer.bounds (world-space, accounts for scale/rotation/parent transforms) + Bounds bounds = backgroundRenderer.bounds; + Vector3 worldSize = bounds.size; + Vector3 worldCenter = bounds.center; + + // Apply to shader globals (used by both background and object shaders) + Shader.SetGlobalVector(WorldSizeID, new Vector4(worldSize.x, worldSize.y, 0f, 0f)); + Shader.SetGlobalVector(WorldCenterID, new Vector4(worldCenter.x, worldCenter.y, 0f, 0f)); + + // Also apply directly to background material for its shader + material.SetVector(WorldSizeID, new Vector4(worldSize.x, worldSize.y, 0f, 0f)); + material.SetVector(WorldCenterID, new Vector4(worldCenter.x, worldCenter.y, 0f, 0f)); + + Logging.Debug($"[TrashMazeController] World bounds inferred from background: " + + $"Size=({worldSize.x:F2}, {worldSize.y:F2}), Center=({worldCenter.x:F2}, {worldCenter.y:F2})"); + } + + private void SpawnPulver() + { + if (pulverPrefab == null) + { + Logging.Error("[TrashMazeController] Pulver prefab not assigned!"); + return; + } + + Vector3 spawnPosition = startPosition != null ? startPosition.position : Vector3.zero; + _pulverInstance = Instantiate(pulverPrefab, spawnPosition, Quaternion.identity); + + Logging.Debug($"[TrashMazeController] Pulver spawned at {spawnPosition}"); + } + + /// + /// Called when player reaches the maze exit + /// + public void OnExitReached() + { + if (_mazeCompleted) + { + Logging.Debug("[TrashMazeController] Maze already completed"); + return; + } + + _mazeCompleted = true; + + Logging.Debug("[TrashMazeController] Maze completed! Player reached exit."); + + // TODO: Trigger completion events + // - Award booster packs collected + // - Open gate for Trafalgar + // - Switch control to Trafalgar + } + + /// + /// Called when player collects a booster pack + /// + public void OnBoosterPackCollected() + { + Logging.Debug("[TrashMazeController] Booster pack collected"); + + // TODO: Integrate with card album system + // CardAlbum.AddBoosterPack(); + } + + internal override void OnManagedDestroy() + { + base.OnManagedDestroy(); + + if (Instance == this) + { + Instance = null; + } + } + } +} + diff --git a/Assets/Scripts/Minigames/TrashMaze/Core/TrashMazeController.cs.meta b/Assets/Scripts/Minigames/TrashMaze/Core/TrashMazeController.cs.meta new file mode 100644 index 00000000..90e8c6ce --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Core/TrashMazeController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Assets/Scripts/Minigames/TrashMaze/Objects.meta b/Assets/Scripts/Minigames/TrashMaze/Objects.meta new file mode 100644 index 00000000..6e38c956 --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Objects.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Assets/Scripts/Minigames/TrashMaze/Objects/Editor.meta b/Assets/Scripts/Minigames/TrashMaze/Objects/Editor.meta new file mode 100644 index 00000000..81c056a8 --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Objects/Editor.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3a935f5e791c46df8920c2c33f1c24c0 +timeCreated: 1765361215 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/TrashMaze/Objects/Editor/RevealableObjectEditor.cs b/Assets/Scripts/Minigames/TrashMaze/Objects/Editor/RevealableObjectEditor.cs new file mode 100644 index 00000000..befd7ac0 --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Objects/Editor/RevealableObjectEditor.cs @@ -0,0 +1,99 @@ +using UnityEngine; +using UnityEditor; +using Minigames.TrashMaze.Objects; + +namespace Minigames.TrashMaze.Editor +{ + [CustomEditor(typeof(RevealableObject))] + public class RevealableObjectEditor : UnityEditor.Editor + { + private RenderTexture _cachedStampTexture; + private Texture2D _previewTexture; + + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + + // Only show debug info in play mode + if (!Application.isPlaying) + { + return; + } + + EditorGUILayout.Space(10); + EditorGUILayout.LabelField("Progressive Reveal Debug (Play Mode Only)", EditorStyles.boldLabel); + EditorGUILayout.HelpBox("Shows the current stamp texture for Progressive reveal mode.", MessageType.Info); + + RevealableObject revealableObject = (RevealableObject)target; + + // Use reflection to get private _revealStampTexture field + var field = typeof(RevealableObject).GetField("_revealStampTexture", + System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + + if (field != null) + { + RenderTexture stampTexture = field.GetValue(revealableObject) as RenderTexture; + + if (stampTexture != null) + { + // Display stamp texture info + EditorGUILayout.LabelField("Stamp Texture:", $"{stampTexture.width}x{stampTexture.height}"); + + // Show preview of stamp texture + GUILayout.Label("Reveal Mask Preview (White = Revealed):"); + + // Create preview texture if needed + if (_cachedStampTexture != stampTexture || _previewTexture == null) + { + _cachedStampTexture = stampTexture; + + if (_previewTexture != null) + { + DestroyImmediate(_previewTexture); + } + + _previewTexture = new Texture2D(stampTexture.width, stampTexture.height, TextureFormat.R8, false); + _previewTexture.filterMode = FilterMode.Point; + } + + // Copy RenderTexture to Texture2D for preview + RenderTexture.active = stampTexture; + _previewTexture.ReadPixels(new Rect(0, 0, stampTexture.width, stampTexture.height), 0, 0); + _previewTexture.Apply(); + RenderTexture.active = null; + + // Display preview with fixed size + float previewSize = 256f; + float aspectRatio = (float)stampTexture.height / stampTexture.width; + Rect previewRect = GUILayoutUtility.GetRect(previewSize, previewSize * aspectRatio); + EditorGUI.DrawPreviewTexture(previewRect, _previewTexture, null, ScaleMode.ScaleToFit); + + // Auto-refresh in play mode + if (Application.isPlaying) + { + Repaint(); + } + } + else + { + EditorGUILayout.HelpBox("No stamp texture found. Make sure object is in Progressive reveal mode.", MessageType.Warning); + } + } + else + { + EditorGUILayout.HelpBox("Could not access stamp texture via reflection.", MessageType.Error); + } + } + + private void OnDisable() + { + // Clean up preview texture + if (_previewTexture != null) + { + DestroyImmediate(_previewTexture); + _previewTexture = null; + } + } + } +} + diff --git a/Assets/Scripts/Minigames/TrashMaze/Objects/Editor/RevealableObjectEditor.cs.meta b/Assets/Scripts/Minigames/TrashMaze/Objects/Editor/RevealableObjectEditor.cs.meta new file mode 100644 index 00000000..f338d84d --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Objects/Editor/RevealableObjectEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1d081993ee424269bf8eae99db36a54c +timeCreated: 1765361215 \ No newline at end of file diff --git a/Assets/Scripts/Minigames/TrashMaze/Objects/RevealableObject.cs b/Assets/Scripts/Minigames/TrashMaze/Objects/RevealableObject.cs new file mode 100644 index 00000000..f75eeb1a --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Objects/RevealableObject.cs @@ -0,0 +1,559 @@ +using Core; +using Minigames.TrashMaze.Core; +using UnityEngine; +using System.Collections; +using AppleHills.Core.Settings; + +namespace Minigames.TrashMaze.Objects +{ + /// + /// Reveal mode for object visibility + /// + public enum RevealMode + { + Binary, // Simple on/off reveal (current system) + Progressive // Pixel-by-pixel progressive reveal with stamp texture + } + + /// + /// Component for objects that need reveal memory (obstacles, booster packs, treasures). + /// Tracks if object has been revealed and updates material properties accordingly. + /// + [RequireComponent(typeof(SpriteRenderer))] + public class RevealableObject : MonoBehaviour + { + [Header("Reveal Settings")] + [SerializeField] private RevealMode revealMode = RevealMode.Binary; + + [Header("Textures")] + [SerializeField] private Sprite normalSprite; + [SerializeField] private Sprite outlineSprite; + + [Header("Progressive Reveal Settings")] + [SerializeField, Range(0.5f, 3f)] private float stampWorldRadius = 1.5f; + [Tooltip("Size of each stamp in world units. Smaller = more gradual reveal. Should be smaller than vision radius.")] + + [Header("Object Type")] + [SerializeField] private bool isBoosterPack = false; + [SerializeField] private bool isExit = false; + + private SpriteRenderer _spriteRenderer; + private Material _instanceMaterial; + private bool _hasBeenRevealed = false; + private bool _isCollected = false; + + // Material property IDs (cached for performance) + private static readonly int IsRevealedID = Shader.PropertyToID("_IsRevealed"); + private static readonly int IsInVisionID = Shader.PropertyToID("_IsInVision"); + private static readonly int RevealMaskID = Shader.PropertyToID("_RevealMask"); + + // Progressive reveal system + private RenderTexture _revealStampTexture; + private Coroutine _stampCoroutine; + private Bounds _objectBounds; + private float _activationDistance; + + // Binary reveal system + private Coroutine _binaryRevealCoroutine; + + private void Awake() + { + _spriteRenderer = GetComponent(); + + if (_spriteRenderer.material == null) + { + Logging.Error($"[RevealableObject] No material assigned to {gameObject.name}"); + return; + } + + // Create instance material + _instanceMaterial = new Material(_spriteRenderer.material); + _spriteRenderer.material = _instanceMaterial; + + // Call mode-specific initialization - COMPLETELY SEPARATE + if (revealMode == RevealMode.Binary) + { + InitializeBinaryMode(); + } + else if (revealMode == RevealMode.Progressive) + { + InitializeProgressiveMode(); + } + } + + // ======================================== + // BINARY MODE INITIALIZATION + // ======================================== + + private void InitializeBinaryMode() + { + // Validate Binary shader + string shaderName = _instanceMaterial.shader.name; + if (!shaderName.Contains("ObjectVisibility") || shaderName.Contains("Progressive")) + { + Logging.Error($"[RevealableObject] {gameObject.name} Binary mode needs shader 'TrashMaze/ObjectVisibility', currently: {shaderName}"); + } + + // Set initial Binary mode properties + _instanceMaterial.SetFloat(IsRevealedID, 0f); + _instanceMaterial.SetFloat(IsInVisionID, 0f); + + // Set textures + if (normalSprite != null) + { + _instanceMaterial.SetTexture("_MainTex", normalSprite.texture); + } + if (outlineSprite != null) + { + _instanceMaterial.SetTexture("_OutlineTex", outlineSprite.texture); + } + + Logging.Debug($"[RevealableObject] {gameObject.name} Binary mode initialized"); + } + + // ======================================== + // PROGRESSIVE MODE INITIALIZATION + // ======================================== + + private void InitializeProgressiveMode() + { + // Validate Progressive shader + string shaderName = _instanceMaterial.shader.name; + if (!shaderName.Contains("ObjectVisibilityProgressive")) + { + Logging.Error($"[RevealableObject] {gameObject.name} Progressive mode needs shader 'TrashMaze/ObjectVisibilityProgressive', currently: {shaderName}"); + } + + // Initialize progressive reveal system + InitializeProgressiveReveal(); + } + + /// + /// Initialize progressive reveal system with dynamic texture sizing + /// + private void InitializeProgressiveReveal() + { + // Get object bounds for UV calculations + _objectBounds = _spriteRenderer.bounds; + + // Load activation distance from settings (use vision radius from follower settings) + var configs = GameManager.GetSettingsObject(); + _activationDistance = configs.FollowerMovement.TrashMazeVisionRadius; + + Logging.Debug($"[RevealableObject] {gameObject.name} loaded activation distance from settings: {_activationDistance}"); + + // Dynamically determine texture size from sprite + int textureWidth = 128; + int textureHeight = 128; + + if (normalSprite != null && normalSprite.texture != null) + { + // Use sprite's texture resolution (match 1:1 for pixel-perfect) + textureWidth = normalSprite.texture.width; + textureHeight = normalSprite.texture.height; + } + else + { + Logging.Warning($"[RevealableObject] {gameObject.name} in Progressive mode but normalSprite not assigned! Using default 128x128 texture. Assign Normal Sprite in inspector!"); + } + + // Create reveal stamp texture (R8 format = 8-bit grayscale, minimal memory) + _revealStampTexture = new RenderTexture(textureWidth, textureHeight, 0, RenderTextureFormat.R8); + _revealStampTexture.filterMode = FilterMode.Point; // Sharp edges for binary reveals + _revealStampTexture.wrapMode = TextureWrapMode.Clamp; + _revealStampTexture.Create(); // Explicitly create the texture + + // Clear to black (nothing revealed initially) + RenderTexture previousActive = RenderTexture.active; + RenderTexture.active = _revealStampTexture; + GL.Clear(false, true, Color.black); + RenderTexture.active = previousActive; + + Logging.Debug($"[RevealableObject] {gameObject.name} cleared reveal texture to black - should be invisible initially"); + + // Set Progressive shader properties + _instanceMaterial.SetTexture(RevealMaskID, _revealStampTexture); + + // Progressive shader uses global _PlayerWorldPos and _VisionRadius (set by PulverController) + // No need to set _IsInVision - shader does per-pixel distance checks + + // Set textures + if (normalSprite != null) + { + _instanceMaterial.SetTexture("_MainTex", normalSprite.texture); + } + if (outlineSprite != null) + { + _instanceMaterial.SetTexture("_OutlineTex", outlineSprite.texture); + } + + Logging.Debug($"[RevealableObject] {gameObject.name} Progressive mode initialized: {textureWidth}x{textureHeight} reveal texture"); + } + + private void Start() + { + if (PulverController.Instance == null) + { + Logging.Error($"[RevealableObject] {gameObject.name} cannot start - PulverController not found!"); + return; + } + + // Start mode-specific runtime logic - COMPLETELY SEPARATE + if (revealMode == RevealMode.Binary) + { + StartBinaryModeTracking(); + } + else if (revealMode == RevealMode.Progressive) + { + StartProgressiveModeTracking(); + } + } + + // ======================================== + // BINARY MODE: Start tracking + // ======================================== + + private void StartBinaryModeTracking() + { + _binaryRevealCoroutine = StartCoroutine(BinaryRevealTrackingCoroutine()); + Logging.Debug($"[RevealableObject] {gameObject.name} Binary mode tracking started"); + } + + // ======================================== + // PROGRESSIVE MODE: Start tracking + // ======================================== + + private void StartProgressiveModeTracking() + { + // Subscribe to movement events for stamping + PulverController.Instance.OnMovementStarted += OnPlayerMovementStarted; + PulverController.Instance.OnMovementStopped += OnPlayerMovementStopped; + + // NO vision tracking coroutine - Progressive shader does per-pixel distance checks using global _PlayerWorldPos + + Logging.Debug($"[RevealableObject] {gameObject.name} Progressive mode tracking started"); + } + + + // ======================================== + // BINARY MODE: Vision-based reveal coroutine + // ======================================== + + /// + /// Binary mode coroutine - tracks player distance and updates vision/reveal flags + /// Runs continuously, checks every 0.1s for performance + /// + private IEnumerator BinaryRevealTrackingCoroutine() + { + while (!_isCollected && _instanceMaterial != null) + { + // Calculate distance to player + float distance = Vector2.Distance(transform.position, PulverController.PlayerPosition); + bool isInRadius = distance < PulverController.VisionRadius; + + // Set real-time vision flag (controls shader color vs outline) + _instanceMaterial.SetFloat(IsInVisionID, isInRadius ? 1f : 0f); + + // Set reveal flag (once revealed, stays revealed) + if (isInRadius && !_hasBeenRevealed) + { + _hasBeenRevealed = true; + _instanceMaterial.SetFloat(IsRevealedID, 1f); + Logging.Debug($"[RevealableObject] {gameObject.name} revealed!"); + } + + // Wait before next check (reduces CPU load) + yield return new WaitForSeconds(0.1f); + } + } + + // ======================================== + // PROGRESSIVE MODE: Event-based stamp reveal + // ======================================== + + /// + /// Called when player starts moving - begin stamping if near object + /// + private void OnPlayerMovementStarted() + { + if (_isCollected || revealMode != RevealMode.Progressive) return; + + // Check if player's vision circle could overlap with object bounds + // Use closest point on bounds to check distance + Vector2 playerPos = PulverController.PlayerPosition; + Vector2 closestPoint = _objectBounds.ClosestPoint(playerPos); + float distanceToBounds = Vector2.Distance(playerPos, closestPoint); + + // Start stamping if vision radius could reach the object + // Add padding to account for vision radius overlap + float activationThreshold = _activationDistance + _objectBounds.extents.magnitude; + + if (distanceToBounds < activationThreshold && _stampCoroutine == null) + { + _stampCoroutine = StartCoroutine(StampRevealCoroutine()); + Logging.Debug($"[RevealableObject] {gameObject.name} started stamping coroutine (distanceToBounds: {distanceToBounds:F2}, threshold: {activationThreshold:F2})"); + } + } + + /// + /// Called when player stops moving - stop stamping + /// + private void OnPlayerMovementStopped() + { + if (_stampCoroutine != null) + { + StopCoroutine(_stampCoroutine); + _stampCoroutine = null; + } + } + + /// + /// Coroutine that stamps reveal texture while player is moving and near object + /// + private IEnumerator StampRevealCoroutine() + { + while (!_isCollected) + { + // Check if player's vision circle overlaps with object bounds + Vector2 playerPos = PulverController.PlayerPosition; + Vector2 closestPoint = _objectBounds.ClosestPoint(playerPos); + float distanceToBounds = Vector2.Distance(playerPos, closestPoint); + + // Calculate activation threshold with padding + float activationThreshold = _activationDistance + _objectBounds.extents.magnitude; + + // If player moved too far away, stop stamping + if (distanceToBounds >= activationThreshold) + { + Logging.Debug($"[RevealableObject] {gameObject.name} stopping stamping coroutine (too far)"); + _stampCoroutine = null; + yield break; + } + + // Stamp if player's vision radius reaches any part of the object + if (distanceToBounds < PulverController.VisionRadius) + { + StampPlayerPosition(); + } + + // Wait before next stamp (reduces GPU writes) + yield return new WaitForSeconds(0.1f); + } + } + + /// + /// Stamp the player's current position onto the reveal texture + /// Direct CPU-based stamping - calculates circle-rectangle intersection in world space + /// + private void StampPlayerPosition() + { + if (_revealStampTexture == null) + { + Logging.Warning($"[RevealableObject] {gameObject.name} cannot stamp: texture is null"); + return; + } + + // Get player position and vision radius in world space + Vector2 playerWorldPos = PulverController.PlayerPosition; + float visionRadius = PulverController.VisionRadius; + + // Get object bounds in world space + Vector2 boundsMin = _objectBounds.min; + Vector2 boundsSize = _objectBounds.size; + + // Get texture dimensions + int texWidth = _revealStampTexture.width; + int texHeight = _revealStampTexture.height; + + // Calculate the bounding box of the circle in world space + Vector2 circleMin = playerWorldPos - Vector2.one * visionRadius; + Vector2 circleMax = playerWorldPos + Vector2.one * visionRadius; + + // Calculate intersection of circle bounding box with object bounds + Vector2 intersectMin = new Vector2( + Mathf.Max(circleMin.x, boundsMin.x), + Mathf.Max(circleMin.y, boundsMin.y) + ); + Vector2 intersectMax = new Vector2( + Mathf.Min(circleMax.x, boundsMin.x + boundsSize.x), + Mathf.Min(circleMax.y, boundsMin.y + boundsSize.y) + ); + + // Check if there's any intersection + if (intersectMin.x >= intersectMax.x || intersectMin.y >= intersectMax.y) + { + return; // No intersection, nothing to stamp + } + + // Convert world space intersection to texture pixel coordinates + int pixelMinX = Mathf.FloorToInt((intersectMin.x - boundsMin.x) / boundsSize.x * texWidth); + int pixelMaxX = Mathf.CeilToInt((intersectMax.x - boundsMin.x) / boundsSize.x * texWidth); + int pixelMinY = Mathf.FloorToInt((intersectMin.y - boundsMin.y) / boundsSize.y * texHeight); + int pixelMaxY = Mathf.CeilToInt((intersectMax.y - boundsMin.y) / boundsSize.y * texHeight); + + // Clamp to texture bounds + pixelMinX = Mathf.Max(0, pixelMinX); + pixelMaxX = Mathf.Min(texWidth, pixelMaxX); + pixelMinY = Mathf.Max(0, pixelMinY); + pixelMaxY = Mathf.Min(texHeight, pixelMaxY); + + // Read current texture data + RenderTexture.active = _revealStampTexture; + Texture2D tempTex = new Texture2D(texWidth, texHeight, TextureFormat.R8, false); + tempTex.ReadPixels(new Rect(0, 0, texWidth, texHeight), 0, 0); + tempTex.Apply(); + + // Stamp pixels within the circle + bool anyPixelStamped = false; + float radiusSquared = visionRadius * visionRadius; + + for (int py = pixelMinY; py < pixelMaxY; py++) + { + for (int px = pixelMinX; px < pixelMaxX; px++) + { + // Convert pixel coordinates back to world space + float worldX = boundsMin.x + (px / (float)texWidth) * boundsSize.x; + float worldY = boundsMin.y + (py / (float)texHeight) * boundsSize.y; + + // Check if this pixel is within the circle + float dx = worldX - playerWorldPos.x; + float dy = worldY - playerWorldPos.y; + float distSquared = dx * dx + dy * dy; + + if (distSquared <= radiusSquared) + { + // Stamp this pixel (set to white) + tempTex.SetPixel(px, py, Color.white); + anyPixelStamped = true; + } + } + } + + if (anyPixelStamped) + { + // Upload modified texture back to GPU + tempTex.Apply(); + Graphics.CopyTexture(tempTex, _revealStampTexture); + + Logging.Debug($"[RevealableObject] {gameObject.name} stamped pixels at world pos ({playerWorldPos.x:F2}, {playerWorldPos.y:F2}), radius {visionRadius:F2}"); + } + + RenderTexture.active = null; + Destroy(tempTex); + } + + private void OnTriggerEnter2D(Collider2D other) + { + // Check if player is interacting + if (other.CompareTag("Player") && _hasBeenRevealed && !_isCollected) + { + HandleInteraction(); + } + } + + private void HandleInteraction() + { + if (isBoosterPack) + { + CollectBoosterPack(); + } + else if (isExit) + { + ActivateExit(); + } + } + + private void CollectBoosterPack() + { + _isCollected = true; + + Logging.Debug($"[RevealableObject] Booster pack collected: {gameObject.name}"); + + // Notify controller + if (TrashMazeController.Instance != null) + { + TrashMazeController.Instance.OnBoosterPackCollected(); + } + + // Destroy object + Destroy(gameObject); + } + + private void ActivateExit() + { + Logging.Debug($"[RevealableObject] Exit activated: {gameObject.name}"); + + // Notify controller + if (TrashMazeController.Instance != null) + { + TrashMazeController.Instance.OnExitReached(); + } + } + + private void OnDestroy() + { + // Stop Binary mode coroutine + if (_binaryRevealCoroutine != null) + { + StopCoroutine(_binaryRevealCoroutine); + } + + // Unsubscribe from Progressive mode movement events + if (revealMode == RevealMode.Progressive && PulverController.Instance != null) + { + PulverController.Instance.OnMovementStarted -= OnPlayerMovementStarted; + PulverController.Instance.OnMovementStopped -= OnPlayerMovementStopped; + } + + // Stop Progressive mode stamping coroutine + if (_stampCoroutine != null) + { + StopCoroutine(_stampCoroutine); + } + + // Clean up progressive reveal resources + if (_revealStampTexture != null) + { + _revealStampTexture.Release(); + Destroy(_revealStampTexture); + } + + + // Clean up instance material + if (_instanceMaterial != null) + { + Destroy(_instanceMaterial); + } + } + + /// + /// Check if object is currently visible to player + /// + public bool IsVisible() + { + float distance = Vector2.Distance(transform.position, PulverController.PlayerPosition); + return distance < PulverController.VisionRadius; + } + + /// + /// Check if object has been revealed at any point + /// + public bool HasBeenRevealed() + { + return _hasBeenRevealed; + } + + /// + /// Force reveal the object (for debugging or special cases) + /// + public void ForceReveal() + { + _hasBeenRevealed = true; + if (_instanceMaterial != null) + { + _instanceMaterial.SetFloat(IsRevealedID, 1f); + } + } + } +} + diff --git a/Assets/Scripts/Minigames/TrashMaze/Objects/RevealableObject.cs.meta b/Assets/Scripts/Minigames/TrashMaze/Objects/RevealableObject.cs.meta new file mode 100644 index 00000000..3172d8cd --- /dev/null +++ b/Assets/Scripts/Minigames/TrashMaze/Objects/RevealableObject.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Assets/Scripts/Movement/FollowerController.cs b/Assets/Scripts/Movement/FollowerController.cs index 4d3710ba..22412813 100644 --- a/Assets/Scripts/Movement/FollowerController.cs +++ b/Assets/Scripts/Movement/FollowerController.cs @@ -38,7 +38,7 @@ public class FollowerController : ManagedBehaviour public float manualMoveSmooth = 8f; // Settings reference - private IPlayerFollowerSettings _settings; + private IFollowerSettings _settings; private IInteractionSettings _interactionSettings; private GameObject _playerRef; @@ -123,7 +123,8 @@ public class FollowerController : ManagedBehaviour } // Initialize settings references - _settings = GameManager.GetSettingsObject(); + var configs = GameManager.GetSettingsObject(); + _settings = configs.FollowerMovement; _interactionSettings = GameManager.GetSettingsObject(); } @@ -295,7 +296,7 @@ public class FollowerController : ManagedBehaviour moveDir = _playerAIPath.velocity.normalized; _lastMoveDir = moveDir; } - else if (_playerTouchController != null && _playerTouchController.isHolding && _playerTouchController.LastDirectMoveDir.sqrMagnitude > 0.01f) + else if (_playerTouchController != null && _playerTouchController.IsHolding && _playerTouchController.LastDirectMoveDir.sqrMagnitude > 0.01f) { moveDir = _playerTouchController.LastDirectMoveDir; _lastMoveDir = moveDir; diff --git a/Assets/Scripts/Utils/Measurements.cs b/Assets/Scripts/Utils/Measurements.cs new file mode 100644 index 00000000..24c0c5e9 --- /dev/null +++ b/Assets/Scripts/Utils/Measurements.cs @@ -0,0 +1,148 @@ +using UnityEditor; +using UnityEngine; + +namespace Utils +{ + public class Measurements : MonoBehaviour + { + public enum MeasurementUnit + { + UnityUnits, + Centimeters, + Meters, + Kilometers, + Inches, + Feet, + Yards, + Miles + } + + public enum MeasurementSource + { + Collider, + Renderer, + Mesh + } + + public MeasurementUnit measurementUnit = MeasurementUnit.Feet; + public MeasurementSource measurementSource = MeasurementSource.Collider; + public GameObject distanceObject; + + internal Vector3 Dimensions; + internal float CenterToCenter; + internal float EdgeToEdge; + + void Update() + { + CalculateDimensions(); + if (distanceObject != null) + { + CalculateDistances(); + } + } + + void CalculateDimensions() + { + Bounds bounds = new Bounds(); + + switch (measurementSource) + { + case MeasurementSource.Collider: + Collider objectCollider = GetComponent(); + if (objectCollider != null) bounds = objectCollider.bounds; + break; + case MeasurementSource.Renderer: + Renderer objectRenderer = GetComponent(); + if (objectRenderer != null) bounds = objectRenderer.bounds; + break; + case MeasurementSource.Mesh: + MeshFilter meshFilter = GetComponent(); + if (meshFilter != null && meshFilter.mesh != null) bounds = meshFilter.mesh.bounds; + break; + } + + Dimensions = ConvertToSelectedUnit(bounds.size); + } + + void CalculateDistances() + { + Vector3 thisPosition = transform.position; + Vector3 otherPosition = distanceObject.transform.position; + + CenterToCenter = ConvertToSelectedUnit(Vector3.Distance(thisPosition, otherPosition)); + + Bounds thisBounds = GetComponent().bounds; + Bounds otherBounds = distanceObject.GetComponent().bounds; + + Vector3 closestPoint1 = thisBounds.ClosestPoint(otherPosition); + Vector3 closestPoint2 = otherBounds.ClosestPoint(thisPosition); + + EdgeToEdge = ConvertToSelectedUnit(Vector3.Distance(closestPoint1, closestPoint2)); + } + + float ConvertToSelectedUnit(float unityUnits) + { + switch (measurementUnit) + { + case MeasurementUnit.Centimeters: + return unityUnits * 100f; + case MeasurementUnit.Meters: + return unityUnits; + case MeasurementUnit.Kilometers: + return unityUnits / 1000f; + case MeasurementUnit.Inches: + return unityUnits * 39.3701f; + case MeasurementUnit.Feet: + return unityUnits * 3.28084f; + case MeasurementUnit.Yards: + return unityUnits * 1.09361f; + case MeasurementUnit.Miles: + return unityUnits * 0.000621371f; + default: + return unityUnits; + } + } + + Vector3 ConvertToSelectedUnit(Vector3 unityUnits) + { + return new Vector3( + ConvertToSelectedUnit(unityUnits.x), + ConvertToSelectedUnit(unityUnits.y), + ConvertToSelectedUnit(unityUnits.z) + ); + } + } + + #if UNITY_EDITOR + [CustomEditor(typeof(Measurements))] + public class MeasurementsEditor : Editor + { + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + + Measurements measurements = (Measurements)target; + + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Dimensions", EditorStyles.boldLabel); + EditorGUILayout.LabelField($"Width\t\t\t{measurements.Dimensions.x:F6} {measurements.measurementUnit}", new GUIStyle(EditorStyles.label) { richText = true }); + EditorGUILayout.LabelField($"Height\t\t\t{measurements.Dimensions.y:F6} {measurements.measurementUnit}", new GUIStyle(EditorStyles.label) { richText = true }); + EditorGUILayout.LabelField($"Depth\t\t\t{measurements.Dimensions.z:F6} {measurements.measurementUnit}", new GUIStyle(EditorStyles.label) { richText = true }); + + if (measurements.distanceObject != null) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField($"Distance to {measurements.distanceObject.name}", EditorStyles.boldLabel); + EditorGUILayout.LabelField($"Center to Center\t\t{measurements.CenterToCenter:F6} {measurements.measurementUnit}", new GUIStyle(EditorStyles.label) { richText = true }); + EditorGUILayout.LabelField($"Edge to Edge\t\t{measurements.EdgeToEdge:F6} {measurements.measurementUnit}", new GUIStyle(EditorStyles.label) { richText = true }); + } + + // This will update the inspector view every frame + if (Application.isPlaying) + { + Repaint(); + } + } + } + #endif +} \ No newline at end of file diff --git a/Assets/Scripts/Utils/Measurements.cs.meta b/Assets/Scripts/Utils/Measurements.cs.meta new file mode 100644 index 00000000..3a47e348 --- /dev/null +++ b/Assets/Scripts/Utils/Measurements.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: efe9f7f2c8df3c0408ff67a95354f616 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 294420 + packageName: MeasureMaster + packageVersion: 1.0 + assetPath: Assets/MeasureMaster/Scripts/Measurements.cs + uploadId: 691048 diff --git a/Assets/Settings/PlayerFollowerSettings.asset b/Assets/Settings/PlayerFollowerSettings.asset index 3c3440fc..da46b8da 100644 --- a/Assets/Settings/PlayerFollowerSettings.asset +++ b/Assets/Settings/PlayerFollowerSettings.asset @@ -12,16 +12,24 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 32cd6d14d9304d5ba0fd590da1346654, type: 3} m_Name: PlayerFollowerSettings m_EditorClassIdentifier: - moveSpeed: 15 - moveAcceleration: 10000 - stopDistance: 2 - useRigidbody: 1 - defaultHoldMovementMode: 1 - followDistance: 5 - manualMoveSmooth: 2 - thresholdFar: 10 - thresholdNear: 7 - stopThreshold: 0.5 - followUpdateInterval: 0.1 - followerSpeedMultiplier: 1.2 - heldIconDisplayHeight: 2 + defaultPlayerMovement: + moveSpeed: 15 + maxAcceleration: 10000 + stopDistance: 0.1 + useRigidbody: 0 + defaultHoldMovementMode: 1 + trashMazeMovement: + moveSpeed: 15 + maxAcceleration: 10000 + stopDistance: 0.1 + useRigidbody: 0 + defaultHoldMovementMode: 1 + followerMovement: + followDistance: 1.5 + manualMoveSmooth: 8 + thresholdFar: 2.5 + thresholdNear: 0.5 + stopThreshold: 0.1 + followUpdateInterval: 0.1 + followerSpeedMultiplier: 1.2 + heldIconDisplayHeight: 2 diff --git a/Assets/Shaders.meta b/Assets/Shaders.meta new file mode 100644 index 00000000..7a1a1b14 --- /dev/null +++ b/Assets/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d826fecc684bae4f94e7928c9c95d83 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/TrashMaze.meta b/Assets/Shaders/TrashMaze.meta new file mode 100644 index 00000000..efd96824 --- /dev/null +++ b/Assets/Shaders/TrashMaze.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Assets/Shaders/TrashMaze/BackgroundVisibility.shader b/Assets/Shaders/TrashMaze/BackgroundVisibility.shader new file mode 100644 index 00000000..1cdc90c1 --- /dev/null +++ b/Assets/Shaders/TrashMaze/BackgroundVisibility.shader @@ -0,0 +1,82 @@ +Shader "TrashMaze/BackgroundVisibility" +{ + Properties + { + _LitTex ("Lit Texture (Color)", 2D) = "white" {} + _UnlitTex ("Unlit Texture (Dark)", 2D) = "white" {} + _TransitionSoftness ("Transition Softness", Range(0, 2)) = 0.5 + } + + SubShader + { + Tags + { + "Queue"="Background" + "RenderType"="Opaque" + } + + LOD 100 + + Pass + { + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + + struct Attributes + { + float4 positionOS : POSITION; + float2 uv : TEXCOORD0; + }; + + struct Varyings + { + float2 uv : TEXCOORD0; + float3 positionWS : TEXCOORD1; + float4 positionCS : SV_POSITION; + }; + + TEXTURE2D(_LitTex); + SAMPLER(sampler_LitTex); + TEXTURE2D(_UnlitTex); + SAMPLER(sampler_UnlitTex); + float4 _LitTex_ST; + float _TransitionSoftness; + + // Global properties set by PulverController + float3 _PlayerWorldPos; + float _VisionRadius; + + Varyings vert(Attributes input) + { + Varyings output; + VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz); + output.positionCS = vertexInput.positionCS; + output.positionWS = vertexInput.positionWS; + output.uv = TRANSFORM_TEX(input.uv, _LitTex); + return output; + } + + half4 frag(Varyings input) : SV_Target + { + // Calculate distance from pixel to player + float dist = distance(input.positionWS.xy, _PlayerWorldPos.xy); + + // Create smooth transition between lit and unlit + float t = smoothstep(_VisionRadius - _TransitionSoftness, _VisionRadius, dist); + + // Sample both textures + half4 litColor = SAMPLE_TEXTURE2D(_LitTex, sampler_LitTex, input.uv); + half4 unlitColor = SAMPLE_TEXTURE2D(_UnlitTex, sampler_UnlitTex, input.uv); + + // Blend based on distance + return lerp(litColor, unlitColor, t); + } + ENDHLSL + } + } + + FallBack "Diffuse" +} + diff --git a/Assets/Shaders/TrashMaze/BackgroundVisibility.shader.meta b/Assets/Shaders/TrashMaze/BackgroundVisibility.shader.meta new file mode 100644 index 00000000..f6a464b5 --- /dev/null +++ b/Assets/Shaders/TrashMaze/BackgroundVisibility.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Assets/Shaders/TrashMaze/ObjectVisibility.shader b/Assets/Shaders/TrashMaze/ObjectVisibility.shader new file mode 100644 index 00000000..9065ac76 --- /dev/null +++ b/Assets/Shaders/TrashMaze/ObjectVisibility.shader @@ -0,0 +1,91 @@ +Shader "TrashMaze/ObjectVisibility" +{ + Properties + { + _MainTex ("Normal Texture (Color)", 2D) = "white" {} + _OutlineTex ("Outline Texture (White)", 2D) = "white" {} + [PerRendererData] _IsRevealed ("Is Revealed", Float) = 0 + [PerRendererData] _IsInVision ("Is In Vision", Float) = 0 + } + + SubShader + { + Tags + { + "Queue"="Transparent" + "RenderType"="Transparent" + "IgnoreProjector"="True" + } + + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + Cull Off + + Pass + { + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + + struct Attributes + { + float4 positionOS : POSITION; + float2 uv : TEXCOORD0; + }; + + struct Varyings + { + float2 uv : TEXCOORD0; + float4 positionCS : SV_POSITION; + }; + + TEXTURE2D(_MainTex); + SAMPLER(sampler_MainTex); + TEXTURE2D(_OutlineTex); + SAMPLER(sampler_OutlineTex); + float4 _MainTex_ST; + + // Per-instance properties (set by RevealableObject component) + float _IsRevealed; + float _IsInVision; + + Varyings vert(Attributes input) + { + Varyings output; + VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz); + output.positionCS = vertexInput.positionCS; + output.uv = TRANSFORM_TEX(input.uv, _MainTex); + return output; + } + + half4 frag(Varyings input) : SV_Target + { + // Three-state logic: + // 1. In vision radius -> show normal texture (color) + // 2. Revealed but outside vision -> show outline texture (white) + // 3. Never revealed -> transparent (hidden) + + if (_IsInVision > 0.5) + { + // Inside vision radius - show color + return SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, input.uv); + } + else if (_IsRevealed > 0.5) + { + // Revealed but outside vision - show outline + return SAMPLE_TEXTURE2D(_OutlineTex, sampler_OutlineTex, input.uv); + } + else + { + // Never revealed - transparent (hidden) + return half4(0, 0, 0, 0); + } + } + ENDHLSL + } + } + + FallBack "Transparent/Diffuse" +} + diff --git a/Assets/Shaders/TrashMaze/ObjectVisibility.shader.meta b/Assets/Shaders/TrashMaze/ObjectVisibility.shader.meta new file mode 100644 index 00000000..6f04f0dc --- /dev/null +++ b/Assets/Shaders/TrashMaze/ObjectVisibility.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Assets/Shaders/TrashMaze/ObjectVisibilityProgressive.shader b/Assets/Shaders/TrashMaze/ObjectVisibilityProgressive.shader new file mode 100644 index 00000000..91c2dd08 --- /dev/null +++ b/Assets/Shaders/TrashMaze/ObjectVisibilityProgressive.shader @@ -0,0 +1,106 @@ +Shader "TrashMaze/ObjectVisibilityProgressive" +{ + Properties + { + _MainTex ("Normal Texture (Color)", 2D) = "white" {} + _OutlineTex ("Outline Texture (White)", 2D) = "white" {} + _RevealMask ("Reveal Mask", 2D) = "black" {} + [PerRendererData] _IsInVision ("Is In Vision", Float) = 0 + } + + SubShader + { + Tags + { + "Queue"="Transparent" + "RenderType"="Transparent" + "IgnoreProjector"="True" + } + + Blend SrcAlpha OneMinusSrcAlpha + ZWrite Off + Cull Off + + Pass + { + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + + struct Attributes + { + float4 positionOS : POSITION; + float2 uv : TEXCOORD0; + }; + + struct Varyings + { + float2 uv : TEXCOORD0; + float4 positionCS : SV_POSITION; + float3 positionWS : TEXCOORD1; + }; + + TEXTURE2D(_MainTex); + SAMPLER(sampler_MainTex); + TEXTURE2D(_OutlineTex); + SAMPLER(sampler_OutlineTex); + TEXTURE2D(_RevealMask); + SAMPLER(sampler_RevealMask); + float4 _MainTex_ST; + + // Global shader properties (set by PulverController) + float2 _PlayerWorldPos; + float _VisionRadius; + + Varyings vert(Attributes input) + { + Varyings output; + VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz); + output.positionCS = vertexInput.positionCS; + output.positionWS = vertexInput.positionWS; + output.uv = TRANSFORM_TEX(input.uv, _MainTex); + return output; + } + + half4 frag(Varyings input) : SV_Target + { + // Sample reveal mask (0 = not revealed, 1 = revealed) + float revealAmount = SAMPLE_TEXTURE2D(_RevealMask, sampler_RevealMask, input.uv).r; + + // Binary decision: is this pixel revealed? + bool isRevealed = revealAmount > 0.5; + + // If pixel was never revealed, hide it completely + if (!isRevealed) + { + return half4(0, 0, 0, 0); + } + + // Calculate per-pixel distance to player in world space + float2 pixelWorldPos = input.positionWS.xy; + float distanceToPlayer = distance(pixelWorldPos, _PlayerWorldPos); + + // Three-state logic per pixel: + // 1. Never revealed -> hide (handled above) + // 2. Revealed + currently in player vision radius -> show color + // 3. Revealed + outside player vision radius -> show outline + + if (distanceToPlayer < _VisionRadius) + { + // Pixel is revealed AND currently in vision - show color + return SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, input.uv); + } + else + { + // Pixel is revealed but NOT currently in vision - show outline + return SAMPLE_TEXTURE2D(_OutlineTex, sampler_OutlineTex, input.uv); + } + } + ENDHLSL + } + } + + FallBack "Transparent/Diffuse" +} + diff --git a/Assets/Shaders/TrashMaze/ObjectVisibilityProgressive.shader.meta b/Assets/Shaders/TrashMaze/ObjectVisibilityProgressive.shader.meta new file mode 100644 index 00000000..888bdade --- /dev/null +++ b/Assets/Shaders/TrashMaze/ObjectVisibilityProgressive.shader.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 732fa975ac924d89bb0078279d2cdb0b +timeCreated: 1765358086 \ No newline at end of file diff --git a/Assets/Shaders/TrashMaze/RevealStamp.shader b/Assets/Shaders/TrashMaze/RevealStamp.shader new file mode 100644 index 00000000..4c2506c1 --- /dev/null +++ b/Assets/Shaders/TrashMaze/RevealStamp.shader @@ -0,0 +1,64 @@ +Shader "Hidden/TrashMaze/RevealStamp" +{ + Properties + { + _StampPos ("Stamp Position", Vector) = (0.5, 0.5, 0, 0) + _StampRadius ("Stamp Radius", Float) = 0.2 + } + + SubShader + { + Tags { "Queue"="Overlay" "RenderType"="Opaque" } + + // Additive blend to accumulate stamps + Blend One One + ZTest Always + ZWrite Off + Cull Off + + Pass + { + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + + struct Attributes + { + float4 positionOS : POSITION; + float2 uv : TEXCOORD0; + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + float2 uv : TEXCOORD0; + }; + + float4 _StampPos; + float _StampRadius; + + Varyings vert(Attributes input) + { + Varyings output; + output.positionCS = TransformObjectToHClip(input.positionOS.xyz); + output.uv = input.uv; + return output; + } + + half4 frag(Varyings input) : SV_Target + { + // Calculate distance from stamp center + float dist = distance(input.uv, _StampPos.xy); + + // Binary circle: 1.0 inside radius, 0.0 outside + float alpha = dist < _StampRadius ? 1.0 : 0.0; + + // Return white with calculated alpha (additive blend accumulates) + return half4(alpha, alpha, alpha, alpha); + } + ENDHLSL + } + } +} + diff --git a/Assets/Shaders/TrashMaze/RevealStamp.shader.meta b/Assets/Shaders/TrashMaze/RevealStamp.shader.meta new file mode 100644 index 00000000..6edb3cd6 --- /dev/null +++ b/Assets/Shaders/TrashMaze/RevealStamp.shader.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 33afb80a55e64e53b8552498ad61acfa +timeCreated: 1765358067 \ No newline at end of file