diff --git a/AGENTS.md b/AGENTS.md index 0712499..6d40d36 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -26,3 +26,8 @@ Current history uses short, lowercase, sentence-style messages (e.g., `init`, `u ## Configuration & Generated Files Treat `Library/`, `Temp/`, and `Logs/` as generated output; avoid manual edits. When adding assets, keep `.meta` files in sync and prefer importing through the Unity Editor. + +## Notes Folder +Use `Notes/` for planning and progress tracking: +- `Notes/GEOTILELOADING_PLAN.md` holds the current plan and approach for tile loading. +- `Notes/GEOTILELOADING_PROGRESS.md` captures current state, commands, and next steps. diff --git a/Assets/_Recovery.meta b/Assets/AddressableAssetsData.meta similarity index 77% rename from Assets/_Recovery.meta rename to Assets/AddressableAssetsData.meta index bf93364..23c84ae 100644 --- a/Assets/_Recovery.meta +++ b/Assets/AddressableAssetsData.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 96c9a6467fc5e1ac4aba80e2ce5979f7 +guid: 97e508d3011a626539889fd77b226bed folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset b/Assets/AddressableAssetsData/AddressableAssetSettings.asset new file mode 100644 index 0000000..4e95daa --- /dev/null +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset @@ -0,0 +1,127 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 468a46d0ae32c3544b7d98094e6448a9, type: 3} + m_Name: AddressableAssetSettings + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetSettings + m_DefaultGroup: 7d009aae9166b06d4bb3f7df656399e5 + m_currentHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_OptimizeCatalogSize: 0 + m_BuildRemoteCatalog: 0 + m_CatalogRequestsTimeout: 0 + m_DisableCatalogUpdateOnStart: 0 + m_InternalIdNamingMode: 0 + m_InternalBundleIdMode: 1 + m_AssetLoadMode: 0 + m_BundledAssetProviderType: + m_AssemblyName: + m_ClassName: + m_AssetBundleProviderType: + m_AssemblyName: + m_ClassName: + m_IgnoreUnsupportedFilesInBuild: 0 + m_UniqueBundleIds: 0 + m_EnableJsonCatalog: 0 + m_NonRecursiveBuilding: 1 + m_AllowNestedBundleFolders: 0 + m_CCDEnabled: 0 + m_maxConcurrentWebRequests: 3 + m_UseUWRForLocalBundles: 0 + m_BundleTimeout: 0 + m_BundleRetryCount: 0 + m_BundleRedirectLimit: -1 + m_SharedBundleSettings: 0 + m_SharedBundleSettingsCustomGroupIndex: 0 + m_ContiguousBundles: 1 + m_StripUnityVersionFromBundleBuild: 0 + m_DisableVisibleSubAssetRepresentations: 0 + m_BuiltInBundleNaming: 0 + mBuiltInBundleCustomNaming: + m_MonoScriptBundleNaming: 0 + m_CheckForContentUpdateRestrictionsOption: 0 + m_MonoScriptBundleCustomNaming: + m_RemoteCatalogBuildPath: + m_Id: 888e852cf5299d044b396c8c5d1be8ca + m_RemoteCatalogLoadPath: + m_Id: + m_ContentStateBuildPathProfileVariableName: + m_CustomContentStateBuildPath: + m_ContentStateBuildPath: + m_BuildAddressablesWithPlayerBuild: 0 + m_overridePlayerVersion: '[UnityEditor.PlayerSettings.bundleVersion]' + m_GroupAssets: + - {fileID: 11400000, guid: eb885766d81094dcdb6a7c50c5e7532d, type: 2} + - {fileID: 11400000, guid: 3b790afb05c70ebd99cdb8abeb47539a, type: 2} + m_BuildSettings: + m_LogResourceManagerExceptions: 1 + m_BundleBuildPath: Temp/com.unity.addressables/AssetBundles + m_ProfileSettings: + m_Profiles: + - m_InheritedParent: + m_Id: b1a62d6d4d5d7588981fb83d2d2275bb + m_ProfileName: Default + m_Values: + - m_Id: 115009ef2669f58c99530d4432ec3964 + m_Value: '[UnityEditor.EditorUserBuildSettings.activeBuildTarget]' + - m_Id: 23665568df98c46eeaee2ef9ea7611fe + m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]' + - m_Id: 334365b7569c7a681827d1a99c166327 + m_Value: 'file://{UnityEngine.Application.persistentDataPath}/TileBundles/[BuildTarget]' + - m_Id: 3dbec98a2ceea7a2db5e98358038bd43 + m_Value: 'ServerData/TileBundles/[BuildTarget]' + - m_Id: 4601799a36420552e8e41f9dc7c48200 + m_Value: + - m_Id: 888e852cf5299d044b396c8c5d1be8ca + m_Value: 'ServerData/[BuildTarget]' + - m_Id: d63f558338e9d8c06bc1639c5e13c011 + m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]' + m_ProfileEntryNames: + - m_Id: 115009ef2669f58c99530d4432ec3964 + m_Name: BuildTarget + m_InlineUsage: 0 + - m_Id: 23665568df98c46eeaee2ef9ea7611fe + m_Name: Local.LoadPath + m_InlineUsage: 0 + - m_Id: 334365b7569c7a681827d1a99c166327 + m_Name: TileLoadPath + m_InlineUsage: 0 + - m_Id: 3dbec98a2ceea7a2db5e98358038bd43 + m_Name: TileBuildPath + m_InlineUsage: 0 + - m_Id: 4601799a36420552e8e41f9dc7c48200 + m_Name: Remote.LoadPath + m_InlineUsage: 0 + - m_Id: 888e852cf5299d044b396c8c5d1be8ca + m_Name: Remote.BuildPath + m_InlineUsage: 0 + - m_Id: d63f558338e9d8c06bc1639c5e13c011 + m_Name: Local.BuildPath + m_InlineUsage: 0 + m_ProfileVersion: 1 + m_LabelTable: + m_LabelNames: + - default + - tile + m_SchemaTemplates: [] + m_GroupTemplateObjects: + - {fileID: 11400000, guid: c4a8deec2ab9384549cd426efaada416, type: 2} + m_InitializationObjects: [] + m_CertificateHandlerType: + m_AssemblyName: + m_ClassName: + m_ActivePlayerDataBuilderIndex: 2 + m_DataBuilders: + - {fileID: 11400000, guid: e01bbc93bbdb8233bbe8a7c538287186, type: 2} + - {fileID: 11400000, guid: f06203e8d884c685b9534ff62efdef16, type: 2} + - {fileID: 11400000, guid: ed82faea465c4d8619db6a11915bcefd, type: 2} + m_ActiveProfileId: b1a62d6d4d5d7588981fb83d2d2275bb diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta b/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta new file mode 100644 index 0000000..e25a760 --- /dev/null +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4eb033ed8ed578ab8ac6b6833ffcb57b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/Android.meta b/Assets/AddressableAssetsData/Android.meta new file mode 100644 index 0000000..002631f --- /dev/null +++ b/Assets/AddressableAssetsData/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 97e2e6a7cb7817ad49ea2ecb8020bf4e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates.meta b/Assets/AddressableAssetsData/AssetGroupTemplates.meta new file mode 100644 index 0000000..afff679 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroupTemplates.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 14dc2b0f00007b1d89c83a57c1a193db +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset new file mode 100644 index 0000000..c9c3a2d --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7218615692470976775 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3} + m_Name: ContentUpdateGroupSchema + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.ContentUpdateGroupSchema + m_Group: {fileID: 0} + m_StaticContent: 0 +--- !u!114 &-4894121034991328133 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3} + m_Name: BundledAssetGroupSchema + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema + m_Group: {fileID: 0} + m_InternalBundleIdMode: 1 + m_Compression: 1 + m_IncludeAddressInCatalog: 1 + m_IncludeGUIDInCatalog: 1 + m_IncludeLabelsInCatalog: 1 + m_InternalIdNamingMode: 0 + m_CacheClearBehavior: 0 + m_IncludeInBuild: 1 + m_BundledAssetProviderType: + m_AssemblyName: + m_ClassName: + m_StripDownloadOptions: 0 + m_ForceUniqueProvider: 0 + m_UseAssetBundleCache: 1 + m_UseAssetBundleCrc: 1 + m_UseAssetBundleCrcForCachedBundles: 1 + m_UseUWRForLocalBundles: 0 + m_Timeout: 0 + m_ChunkedTransfer: 0 + m_RedirectLimit: -1 + m_RetryCount: 0 + m_BuildPath: + m_Id: + m_LoadPath: + m_Id: + m_BundleMode: 0 + m_AssetBundleProviderType: + m_AssemblyName: + m_ClassName: + m_UseDefaultSchemaSettings: 0 + m_SelectedPathPairIndex: 0 + m_BundleNaming: 0 + m_AssetLoadMode: 0 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1a3c5d64ac83548c09dd1678b9f6f1cd, type: 3} + m_Name: Packed Assets + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetGroupTemplate + m_SchemaObjects: + - {fileID: -4894121034991328133} + - {fileID: -7218615692470976775} + m_Description: Pack assets into asset bundles. + m_Settings: {fileID: 11400000, guid: 4eb033ed8ed578ab8ac6b6833ffcb57b, type: 2} diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta new file mode 100644 index 0000000..8ae46f5 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c4a8deec2ab9384549cd426efaada416 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups.meta b/Assets/AddressableAssetsData/AssetGroups.meta new file mode 100644 index 0000000..0694fff --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1de3e4e4d0970627f818fcc0d7c7e96c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset new file mode 100644 index 0000000..5d78eb0 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3} + m_Name: Default Local Group + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetGroup + m_GroupName: Default Local Group + m_GUID: 7d009aae9166b06d4bb3f7df656399e5 + m_SerializeEntries: [] + m_ReadOnly: 0 + m_Settings: {fileID: 11400000, guid: 4eb033ed8ed578ab8ac6b6833ffcb57b, type: 2} + m_SchemaSet: + m_Schemas: + - {fileID: 11400000, guid: c761f75ec4f110416a9ad0692cd83f50, type: 2} + - {fileID: 11400000, guid: 9a4e8f2c7fe52e400a4e0d21f4484b8c, type: 2} diff --git a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset.meta new file mode 100644 index 0000000..748e814 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b790afb05c70ebd99cdb8abeb47539a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas.meta new file mode 100644 index 0000000..ef958dc --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6dc7a59aac22c40b9899d1b2f4c28f0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset new file mode 100644 index 0000000..26486e6 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3} + m_Name: Default Local Group_BundledAssetGroupSchema + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema + m_Group: {fileID: 11400000, guid: 3b790afb05c70ebd99cdb8abeb47539a, type: 2} + m_InternalBundleIdMode: 1 + m_Compression: 1 + m_IncludeAddressInCatalog: 1 + m_IncludeGUIDInCatalog: 1 + m_IncludeLabelsInCatalog: 1 + m_InternalIdNamingMode: 0 + m_CacheClearBehavior: 0 + m_IncludeInBuild: 1 + m_BundledAssetProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider + m_StripDownloadOptions: 0 + m_ForceUniqueProvider: 0 + m_UseAssetBundleCache: 1 + m_UseAssetBundleCrc: 1 + m_UseAssetBundleCrcForCachedBundles: 1 + m_UseUWRForLocalBundles: 0 + m_Timeout: 0 + m_ChunkedTransfer: 0 + m_RedirectLimit: -1 + m_RetryCount: 0 + m_BuildPath: + m_Id: d63f558338e9d8c06bc1639c5e13c011 + m_LoadPath: + m_Id: 23665568df98c46eeaee2ef9ea7611fe + m_BundleMode: 0 + m_AssetBundleProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider + m_UseDefaultSchemaSettings: 0 + m_SelectedPathPairIndex: 0 + m_BundleNaming: 0 + m_AssetLoadMode: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset.meta new file mode 100644 index 0000000..6c5de9f --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c761f75ec4f110416a9ad0692cd83f50 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset new file mode 100644 index 0000000..a901194 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3} + m_Name: Default Local Group_ContentUpdateGroupSchema + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.ContentUpdateGroupSchema + m_Group: {fileID: 11400000, guid: 3b790afb05c70ebd99cdb8abeb47539a, type: 2} + m_StaticContent: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset.meta new file mode 100644 index 0000000..dcf338e --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a4e8f2c7fe52e400a4e0d21f4484b8c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_BundledAssetGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_BundledAssetGroupSchema.asset new file mode 100644 index 0000000..9ab631e --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_BundledAssetGroupSchema.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3} + m_Name: TilePrefabs_BundledAssetGroupSchema + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema + m_Group: {fileID: 11400000, guid: eb885766d81094dcdb6a7c50c5e7532d, type: 2} + m_InternalBundleIdMode: 1 + m_Compression: 1 + m_IncludeAddressInCatalog: 1 + m_IncludeGUIDInCatalog: 1 + m_IncludeLabelsInCatalog: 1 + m_InternalIdNamingMode: 0 + m_CacheClearBehavior: 0 + m_IncludeInBuild: 1 + m_BundledAssetProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider + m_StripDownloadOptions: 0 + m_ForceUniqueProvider: 0 + m_UseAssetBundleCache: 1 + m_UseAssetBundleCrc: 1 + m_UseAssetBundleCrcForCachedBundles: 1 + m_UseUWRForLocalBundles: 0 + m_Timeout: 0 + m_ChunkedTransfer: 0 + m_RedirectLimit: -1 + m_RetryCount: 0 + m_BuildPath: + m_Id: 3dbec98a2ceea7a2db5e98358038bd43 + m_LoadPath: + m_Id: 334365b7569c7a681827d1a99c166327 + m_BundleMode: 1 + m_AssetBundleProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider + m_UseDefaultSchemaSettings: 0 + m_SelectedPathPairIndex: 0 + m_BundleNaming: 0 + m_AssetLoadMode: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_BundledAssetGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_BundledAssetGroupSchema.asset.meta new file mode 100644 index 0000000..f145c0d --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_BundledAssetGroupSchema.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d49fd7bfa51b836edbb29b9f35a7b0be +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_ContentUpdateGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_ContentUpdateGroupSchema.asset new file mode 100644 index 0000000..ff09f35 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_ContentUpdateGroupSchema.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3} + m_Name: TilePrefabs_ContentUpdateGroupSchema + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.ContentUpdateGroupSchema + m_Group: {fileID: 11400000, guid: eb885766d81094dcdb6a7c50c5e7532d, type: 2} + m_StaticContent: 1 diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_ContentUpdateGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_ContentUpdateGroupSchema.asset.meta new file mode 100644 index 0000000..8d7eda9 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/TilePrefabs_ContentUpdateGroupSchema.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e0b4df8528236e509012ffd7763b4bb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/TilePrefabs.asset b/Assets/AddressableAssetsData/AssetGroups/TilePrefabs.asset new file mode 100644 index 0000000..e48c0e1 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/TilePrefabs.asset @@ -0,0 +1,83 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3} + m_Name: TilePrefabs + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetGroup + m_GroupName: TilePrefabs + m_GUID: 0143b08b59e2f5005abd1a17174c850b + m_SerializeEntries: + - m_GUID: 10548af33d6eab29e91460fcb5a47bc9 + m_Address: dgm1_32_329_5513 + m_ReadOnly: 0 + m_SerializedLabels: + - tile + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 221845424a0627585a042169b8df27b6 + m_Address: dgm1_32_329_5514 + m_ReadOnly: 0 + m_SerializedLabels: + - tile + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 3ca5b3ef51788f74dafc21eeeff0189a + m_Address: dgm1_32_329_5512 + m_ReadOnly: 0 + m_SerializedLabels: + - tile + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 42b9e141653a4a0198d3df1c0ea172cb + m_Address: dgm1_32_328_5514 + m_ReadOnly: 0 + m_SerializedLabels: + - tile + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 8666356c8b6178d04880ce826eabca18 + m_Address: dgm1_32_328_5513 + m_ReadOnly: 0 + m_SerializedLabels: + - tile + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 9c55af37b565bfbd9aad17808d49b382 + m_Address: dgm1_32_328_5515 + m_ReadOnly: 0 + m_SerializedLabels: + - tile + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: b024e491987c828a88e6715c1ed676e8 + m_Address: dgm1_32_328_5512 + m_ReadOnly: 0 + m_SerializedLabels: + - tile + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: d53c185e3cdc47044a80f56a635b9076 + m_Address: dgm1_32_328_5511 + m_ReadOnly: 0 + m_SerializedLabels: + - tile + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: e1871c8e47d3d74ca8ddd86b1d36825b + m_Address: dgm1_32_329_5515 + m_ReadOnly: 0 + m_SerializedLabels: + - tile + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: e88a6070a6dbdaa549cb8a95d58a3838 + m_Address: dgm1_32_329_5511 + m_ReadOnly: 0 + m_SerializedLabels: + - tile + FlaggedDuringContentUpdateRestriction: 0 + m_ReadOnly: 0 + m_Settings: {fileID: 11400000, guid: 4eb033ed8ed578ab8ac6b6833ffcb57b, type: 2} + m_SchemaSet: + m_Schemas: + - {fileID: 11400000, guid: d49fd7bfa51b836edbb29b9f35a7b0be, type: 2} + - {fileID: 11400000, guid: 2e0b4df8528236e509012ffd7763b4bb, type: 2} diff --git a/Assets/AddressableAssetsData/AssetGroups/TilePrefabs.asset.meta b/Assets/AddressableAssetsData/AssetGroups/TilePrefabs.asset.meta new file mode 100644 index 0000000..5e52281 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/TilePrefabs.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb885766d81094dcdb6a7c50c5e7532d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders.meta b/Assets/AddressableAssetsData/DataBuilders.meta new file mode 100644 index 0000000..3130fc8 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d143b8e624e7de8b9f56edec34f969a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset new file mode 100644 index 0000000..12ab1d2 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88d21199f5d473f4db36845f2318f180, type: 3} + m_Name: BuildScriptFastMode + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Build.DataBuilders.BuildScriptFastMode + instanceProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider + sceneProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta new file mode 100644 index 0000000..d749bd7 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e01bbc93bbdb8233bbe8a7c538287186 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset new file mode 100644 index 0000000..d8c59fd --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3e2e0ffa088c91d41a086d0b8cb16bdc, type: 3} + m_Name: BuildScriptPackedMode + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Build.DataBuilders.BuildScriptPackedMode + instanceProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider + sceneProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta new file mode 100644 index 0000000..2321071 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ed82faea465c4d8619db6a11915bcefd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset new file mode 100644 index 0000000..d566c2c --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ad8c280d42ee0ed41a27db23b43dd2bf, type: 3} + m_Name: BuildScriptPackedPlayMode + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Build.DataBuilders.BuildScriptPackedPlayMode + instanceProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider + sceneProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta new file mode 100644 index 0000000..25738dc --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f06203e8d884c685b9534ff62efdef16 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DefaultObject.asset b/Assets/AddressableAssetsData/DefaultObject.asset new file mode 100644 index 0000000..5771431 --- /dev/null +++ b/Assets/AddressableAssetsData/DefaultObject.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a189bb168d8d90478a09ea08c2f3d72, type: 3} + m_Name: DefaultObject + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject + m_AddressableAssetSettingsGuid: 4eb033ed8ed578ab8ac6b6833ffcb57b diff --git a/Assets/AddressableAssetsData/DefaultObject.asset.meta b/Assets/AddressableAssetsData/DefaultObject.asset.meta new file mode 100644 index 0000000..b08861e --- /dev/null +++ b/Assets/AddressableAssetsData/DefaultObject.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07ae6632a66180d158acd5a9ec27367a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset new file mode 100644 index 0000000..b674867 --- /dev/null +++ b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e3976da977cb49238499ea3b4c237ae, type: 3} + m_Name: ProfileDataSourceSettings + m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.ProfileDataSourceSettings + profileGroupTypes: + - m_GroupTypePrefix: Built-In + m_Variables: + - m_Suffix: BuildPath + m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]' + - m_Suffix: LoadPath + m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]' + environments: [] + currentEnvironment: + id: + projectId: + projectGenesisId: + name: + isDefault: 0 diff --git a/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta new file mode 100644 index 0000000..755684a --- /dev/null +++ b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67c833a3de3353992a1e1f5c41583bbf +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor.meta b/Assets/Editor.meta new file mode 100644 index 0000000..1222876 --- /dev/null +++ b/Assets/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e1578558e57e2b96812896930b09f3b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/ForceAndroidPreferences.cs b/Assets/Editor/ForceAndroidPreferences.cs new file mode 100644 index 0000000..d7093d1 --- /dev/null +++ b/Assets/Editor/ForceAndroidPreferences.cs @@ -0,0 +1,25 @@ +using UnityEditor; +using UnityEngine; + +[InitializeOnLoad] +public class ForceAndroidPreferences +{ + static ForceAndroidPreferences() + { + // Force JDK path + EditorPrefs.SetString("JdkPath", "/usr/lib/jvm/java-17-openjdk"); + + // Force SDK path + EditorPrefs.SetString("AndroidSdkRoot", "/opt/android-sdk"); + + // Force NDK path + EditorPrefs.SetString("AndroidNdkRoot", "/opt/android-sdk/ndk/27.2.12479018"); + + // Disable "use Unity embedded" flags + EditorPrefs.SetBool("AndroidSdkUseEmbedded", false); + EditorPrefs.SetBool("AndroidNdkUseEmbedded", false); + EditorPrefs.SetBool("JdkUseEmbedded", false); + + Debug.Log("[ForceAndroidPreferences] Android tools paths set on startup"); + } +} diff --git a/Assets/Editor/ForceAndroidPreferences.cs.meta b/Assets/Editor/ForceAndroidPreferences.cs.meta new file mode 100644 index 0000000..84a6467 --- /dev/null +++ b/Assets/Editor/ForceAndroidPreferences.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: bf47e9cd5bbd7f43cbe52336a00e8e81 \ No newline at end of file diff --git a/Assets/Samples/XR Composition Layers/2.2.0/Sample External Android Surface Project/Scripts/Editor/AndroidBuildSettings.cs b/Assets/Samples/XR Composition Layers/2.2.0/Sample External Android Surface Project/Scripts/Editor/AndroidBuildSettings.cs index 7382134..357e625 100644 --- a/Assets/Samples/XR Composition Layers/2.2.0/Sample External Android Surface Project/Scripts/Editor/AndroidBuildSettings.cs +++ b/Assets/Samples/XR Composition Layers/2.2.0/Sample External Android Surface Project/Scripts/Editor/AndroidBuildSettings.cs @@ -34,10 +34,10 @@ public class AndroidBuildSettings : IPreprocessBuildWithReport /// private static void SetAndroidBuildSettings() { - if (PlayerSettings.Android.minSdkVersion < AndroidSdkVersions.AndroidApiLevel24) + if (PlayerSettings.Android.minSdkVersion < AndroidSdkVersions.AndroidApiLevel34) { - PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel24; - Debug.Log("Android minimum SDK version has been updated to Level 24. The lowest level supported by the composition layers package."); + PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel34; + Debug.Log("Android minimum SDK version has been updated to Level 34."); } } } diff --git a/Assets/Scenes/TestArea1.unity b/Assets/Scenes/TestArea1.unity new file mode 100644 index 0000000..24ac4e7 --- /dev/null +++ b/Assets/Scenes/TestArea1.unity @@ -0,0 +1,882 @@ +%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: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 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: 1 + 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: 5 + m_PVRFilteringGaussRadiusAO: 2 + 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 &592258981 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 592258982} + m_Layer: 0 + m_Name: GeoTileContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &592258982 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 592258981} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.78763, y: -0, z: 5.58919} + 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!114 &1592246342 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 742272467831425975, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 760ff70c1c91bdd45907d0ff0cdcaf7f, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1592246343 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4083252680172266230, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1592246344 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 6480925242510836759, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 75b29b6c6428c984a8a73ffc2d58063b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1592246345 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7347985736721345035, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9f365cf844c03449bc8973eead2c3c1, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1889629915 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1767192433, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2102994769 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102994771} + - component: {fileID: 2102994770} + m_Layer: 0 + m_Name: GeoTileLoader + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2102994770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102994769} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 14a2150bfb293bd30a7128844a9755da, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::GeoTileAddressablesLoader + player: {fileID: 9014170783777442264} + tilesParent: {fileID: 592258982} + tileBundleFolderName: TileBundles + manifestFileName: TileManifest.json + buildTargetFolderOverride: + loadRadiusMeters: 1500 + unloadRadiusMeters: 2000 + updateInterval: 0.5 + maxConcurrentLoads: 2 +--- !u!4 &2102994771 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102994769} + 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 &2181405618988545911 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 9014170783777442264} + m_Modifications: + - target: {fileID: 8429981633443581377, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_Name + value: TunnelingVignette + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.size + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_LocomotionProvider + value: + objectReference: {fileID: 1592246345} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_LocomotionProvider + value: + objectReference: {fileID: 1592246344} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_LocomotionProvider + value: + objectReference: {fileID: 9014170783777442268} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_LocomotionProvider + value: + objectReference: {fileID: 9014170783777442267} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_LocomotionProvider + value: + objectReference: {fileID: 1592246343} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_LocomotionProvider + value: + objectReference: {fileID: 1592246342} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_LocomotionProvider + value: + objectReference: {fileID: 9014170783777442266} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_LocomotionProvider + value: + objectReference: {fileID: 9014170783777442265} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_EaseInTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_EaseOutTime + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_ApertureSize + value: 0.7 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_VignetteColor.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_FeatheringEffect + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[0].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[1].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[2].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[3].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[4].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[5].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[6].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8429981633443581383, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + propertyPath: m_LocomotionVignetteProviders.Array.data[7].m_OverrideParameters.m_VignetteColorBlend.a + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} +--- !u!4 &2181405618988545912 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8429981633443581382, guid: 6c8af5c8012f01440af6cb2bc3eb987c, type: 3} + m_PrefabInstance: {fileID: 2181405618988545911} + m_PrefabAsset: {fileID: 0} +--- !u!114 &3127728407676174906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127728407676174909} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83e4e6cca11330d4088d729ab4fc9d9f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_StartingHoverFilters: [] + m_StartingSelectFilters: [] +--- !u!4 &3127728407676174907 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127728407676174909} + 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 &3127728407676174909 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3127728407676174907} + - component: {fileID: 3127728407676174906} + m_Layer: 0 + m_Name: XR Interaction Manager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &3127728408198131880 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3127728408198131895} + - component: {fileID: 3127728408198131894} + - component: {fileID: 3127728408198131892} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &3127728408198131892 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127728408198131880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ab68ce6587aab0146b8dabefbd806791, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_ClickSpeed: 0.3 + m_MoveDeadzone: 0.6 + m_RepeatDelay: 0.5 + m_RepeatRate: 0.1 + m_TrackedDeviceDragThresholdMultiplier: 2 + m_TrackedScrollDeltaMultiplier: 5 + m_BypassUIToolkitEvents: 0 + m_ActiveInputMode: 1 + m_EnableXRInput: 1 + m_EnableMouseInput: 1 + m_EnableTouchInput: 1 + m_EnableGamepadInput: 1 + m_EnableJoystickInput: 1 + m_PointAction: {fileID: 2869410428622933342, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_LeftClickAction: {fileID: 1855836014308820768, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_MiddleClickAction: {fileID: -6289560987278519447, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_RightClickAction: {fileID: -2562941478296515153, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ScrollWheelAction: {fileID: 5825226938762934180, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_NavigateAction: {fileID: -7967456002180160679, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_SubmitAction: {fileID: 3994978066732806534, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_CancelAction: {fileID: 2387711382375263438, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_EnableBuiltinActionsAsFallback: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel +--- !u!114 &3127728408198131894 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127728408198131880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &3127728408198131895 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127728408198131880} + 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 &9014170783777442263 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1717954561962503725, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_Name + value: XR Origin (XR Rig) + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalPosition.x + value: 1000 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalPosition.y + value: 1000 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 1767192434, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + insertIndex: -1 + addedObject: {fileID: 2181405618988545912} + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 1767192433, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + insertIndex: -1 + addedObject: {fileID: 9014170783777442269} + m_SourcePrefab: {fileID: 100100000, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} +--- !u!4 &9014170783777442264 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1767192434, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} +--- !u!114 &9014170783777442265 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5739245880472075158, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 496880615cd240be960d436c1c8ae570, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &9014170783777442266 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1748222016861356527, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01f69dc1cb084aa42b2f2f8cd87bc770, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &9014170783777442267 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 2032798983271290625, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b94c4c83dec6a94fbaebf543478259e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &9014170783777442268 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 153982007679157697, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3} + m_PrefabInstance: {fileID: 9014170783777442263} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b1e8c997df241c1a67045eeac79b41b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &9014170783777442269 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1889629915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalCameraData + 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!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 9014170783777442263} + - {fileID: 3127728407676174907} + - {fileID: 3127728408198131895} + - {fileID: 2102994771} + - {fileID: 592258982} diff --git a/Assets/_Recovery/0.unity.meta b/Assets/Scenes/TestArea1.unity.meta similarity index 74% rename from Assets/_Recovery/0.unity.meta rename to Assets/Scenes/TestArea1.unity.meta index f7b84f2..2028b01 100644 --- a/Assets/_Recovery/0.unity.meta +++ b/Assets/Scenes/TestArea1.unity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3a7ce2f4553dfe7778507dc14cbcc2fd +guid: 798ff6a8bc8cc60d69669ccee591d0fa DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Scripts/Editor/GeoTileAddressablesBuilder.cs b/Assets/Scripts/Editor/GeoTileAddressablesBuilder.cs new file mode 100644 index 0000000..d7328bb --- /dev/null +++ b/Assets/Scripts/Editor/GeoTileAddressablesBuilder.cs @@ -0,0 +1,313 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using UnityEditor; +using UnityEditor.AddressableAssets; +using UnityEditor.AddressableAssets.Settings; +using UnityEditor.AddressableAssets.Settings.GroupSchemas; +using UnityEngine; + +public static class GeoTileAddressablesBuilder +{ + private const string TilePrefabsDir = "Assets/TilePrefabs"; + private const string TileIndexCsvPath = "Assets/GeoData/tile_index.csv"; + private const string GroupName = "TilePrefabs"; + private const string TileLabel = "tile"; + private const string ManifestFileName = "TileManifest.json"; + private const float TileSizeMeters = 1000f; + + private const string BuildPathVariable = "TileBuildPath"; + private const string LoadPathVariable = "TileLoadPath"; + private const string BuildPathValue = "ServerData/TileBundles/[BuildTarget]"; + private const string LoadPathValue = "file://{UnityEngine.Application.persistentDataPath}/TileBundles/[BuildTarget]"; + + [MenuItem("Tools/Geo Tiles/Build Tile Addressables (Android)")] + public static void BuildAndroid() + { + BuildForTarget(BuildTarget.Android, BuildTargetGroup.Android); + } + + private static void BuildForTarget(BuildTarget target, BuildTargetGroup group) + { + if (!Directory.Exists(TilePrefabsDir)) + { + Debug.LogError($"[GeoTileAddressablesBuilder] Prefab directory missing: {TilePrefabsDir}"); + return; + } + if (!File.Exists(TileIndexCsvPath)) + { + Debug.LogError($"[GeoTileAddressablesBuilder] CSV missing: {TileIndexCsvPath}"); + return; + } + + var settings = AddressableAssetSettingsDefaultObject.GetSettings(true); + if (settings == null) + { + Debug.LogError("[GeoTileAddressablesBuilder] Addressables settings not found."); + return; + } + + EnsureProfileVariable(settings, BuildPathVariable, BuildPathValue); + EnsureProfileVariable(settings, LoadPathVariable, LoadPathValue); + EnsureRemoteCatalogPaths(settings); + + var groupAsset = GetOrCreateGroup(settings); + ConfigureGroup(settings, groupAsset); + AssignPrefabs(settings, groupAsset); + + settings.SetDirty(AddressableAssetSettings.ModificationEvent.BatchModification, null, true); + AssetDatabase.SaveAssets(); + + var previousTarget = EditorUserBuildSettings.activeBuildTarget; + if (previousTarget != target) + { + if (!EditorUserBuildSettings.SwitchActiveBuildTarget(group, target)) + { + Debug.LogError($"[GeoTileAddressablesBuilder] Failed to switch build target to {target}."); + return; + } + } + + AddressableAssetSettings.BuildPlayerContent(); + + var outputPath = GetRemoteCatalogBuildPath(settings, target); + if (!Directory.Exists(outputPath)) + { + Debug.LogError($"[GeoTileAddressablesBuilder] Build output not found: {outputPath}"); + return; + } + + var (catalogFile, catalogHashFile) = FindCatalogFiles(outputPath); + if (string.IsNullOrEmpty(catalogFile)) + { + Debug.LogError($"[GeoTileAddressablesBuilder] Catalog file not found in: {outputPath}"); + return; + } + + var manifest = BuildManifest(target.ToString(), catalogFile, catalogHashFile); + var manifestPath = Path.Combine(outputPath, ManifestFileName); + File.WriteAllText(manifestPath, JsonUtility.ToJson(manifest, true)); + + AssetDatabase.Refresh(); + + Debug.Log($"[GeoTileAddressablesBuilder] DONE. Output={outputPath}"); + } + + private static void AssignPrefabs(AddressableAssetSettings settings, AddressableAssetGroup group) + { + var prefabGuids = AssetDatabase.FindAssets("t:Prefab", new[] { TilePrefabsDir }); + foreach (var guid in prefabGuids) + { + var path = AssetDatabase.GUIDToAssetPath(guid).Replace("\\", "/"); + var parentDir = Path.GetDirectoryName(path)?.Replace("\\", "/"); + if (!string.Equals(parentDir, TilePrefabsDir, StringComparison.OrdinalIgnoreCase)) + continue; + + var entry = settings.CreateOrMoveEntry(guid, group, false, false); + entry.address = Path.GetFileNameWithoutExtension(path); + entry.SetLabel(TileLabel, true, true); + } + } + + private static AddressableAssetGroup GetOrCreateGroup(AddressableAssetSettings settings) + { + var group = settings.FindGroup(GroupName); + if (group != null) + return group; + + group = settings.CreateGroup(GroupName, false, false, false, new List()); + group.AddSchema(); + group.AddSchema(); + return group; + } + + private static void ConfigureGroup(AddressableAssetSettings settings, AddressableAssetGroup group) + { + var bundleSchema = group.GetSchema(); + if (bundleSchema == null) + bundleSchema = group.AddSchema(); + + bundleSchema.BundleMode = BundledAssetGroupSchema.BundlePackingMode.PackSeparately; + bundleSchema.BuildPath.SetVariableByName(settings, BuildPathVariable); + bundleSchema.LoadPath.SetVariableByName(settings, LoadPathVariable); + + var updateSchema = group.GetSchema(); + if (updateSchema != null) + updateSchema.StaticContent = true; + } + + private static void EnsureProfileVariable(AddressableAssetSettings settings, string name, string value) + { + var profileId = settings.activeProfileId; + var current = settings.profileSettings.GetValueByName(profileId, name); + if (string.IsNullOrEmpty(current)) + settings.profileSettings.CreateValue(name, value); + + settings.profileSettings.SetValue(profileId, name, value); + } + + private static void EnsureRemoteCatalogPaths(AddressableAssetSettings settings) + { + settings.BuildRemoteCatalog = true; + settings.RemoteCatalogBuildPath.SetVariableByName(settings, BuildPathVariable); + settings.RemoteCatalogLoadPath.SetVariableByName(settings, LoadPathVariable); + } + + private static (string catalogFile, string catalogHashFile) FindCatalogFiles(string outputPath) + { + var catalogFiles = Directory.GetFiles(outputPath, "*catalog*.json"); + if (catalogFiles.Length == 0) + catalogFiles = Directory.GetFiles(outputPath, "*catalog*.bin"); + + var catalogFile = catalogFiles.Length > 0 ? Path.GetFileName(catalogFiles[0]) : null; + + string catalogHash = null; + if (!string.IsNullOrEmpty(catalogFile)) + { + var baseName = Path.GetFileNameWithoutExtension(catalogFile); + var hashCandidate = Path.Combine(outputPath, $"{baseName}.hash"); + if (File.Exists(hashCandidate)) + { + catalogHash = Path.GetFileName(hashCandidate); + } + else + { + var hashFiles = Directory.GetFiles(outputPath, "*catalog*.hash"); + if (hashFiles.Length > 0) + catalogHash = Path.GetFileName(hashFiles[0]); + } + } + + return (catalogFile, catalogHash); + } + + private static TileManifest BuildManifest(string buildTarget, string catalogFile, string catalogHashFile) + { + var tiles = ParseTilesCsv(); + if (tiles.Count == 0) + throw new InvalidOperationException("No tiles parsed from tile_index.csv"); + + double minX = double.PositiveInfinity; + double minY = double.PositiveInfinity; + + foreach (var tile in tiles) + { + minX = Math.Min(minX, tile.Xmin); + minY = Math.Min(minY, tile.Ymin); + } + + var entries = new TileEntry[tiles.Count]; + for (int i = 0; i < tiles.Count; i++) + { + var tile = tiles[i]; + entries[i] = new TileEntry + { + tileId = tile.TileId, + offsetX = (float)(tile.Xmin - minX), + offsetZ = (float)(tile.Ymin - minY), + baseY = (float)tile.GlobalMin + }; + } + + return new TileManifest + { + buildTarget = buildTarget, + catalogFile = catalogFile, + catalogHashFile = catalogHashFile, + tileSizeMeters = TileSizeMeters, + tiles = entries + }; + } + + private static string GetRemoteCatalogBuildPath(AddressableAssetSettings settings, BuildTarget target) + { + var rawPath = settings.RemoteCatalogBuildPath.GetValue(settings); + if (string.IsNullOrWhiteSpace(rawPath)) + rawPath = BuildPathValue.Replace("[BuildTarget]", target.ToString()); + + return Path.GetFullPath(rawPath.Replace("[BuildTarget]", target.ToString())); + } + + private struct TileRecord + { + public string TileId; + public double Xmin; + public double Ymin; + public double GlobalMin; + public double GlobalMax; + } + + private static List ParseTilesCsv() + { + var tiles = new List(); + var ci = CultureInfo.InvariantCulture; + var lines = File.ReadAllLines(TileIndexCsvPath); + + if (lines.Length < 2) + return tiles; + + var headerMap = BuildHeaderMap(lines[0]); + string[] required = { "tile_id", "xmin", "ymin", "global_min", "global_max" }; + if (!HasAll(headerMap, required)) + { + Debug.LogError("[GeoTileAddressablesBuilder] CSV missing required columns."); + return tiles; + } + + int IDX_TILE = headerMap["tile_id"]; + int IDX_XMIN = headerMap["xmin"]; + int IDX_YMIN = headerMap["ymin"]; + int IDX_GMIN = headerMap["global_min"]; + int IDX_GMAX = headerMap["global_max"]; + + for (int i = 1; i < lines.Length; i++) + { + var line = lines[i].Trim(); + if (string.IsNullOrWhiteSpace(line)) + continue; + + var parts = line.Split(','); + int maxIdx = Math.Max(IDX_TILE, Math.Max(IDX_XMIN, Math.Max(IDX_YMIN, Math.Max(IDX_GMIN, IDX_GMAX)))); + if (parts.Length <= maxIdx) + continue; + + try + { + tiles.Add(new TileRecord + { + TileId = parts[IDX_TILE].Trim(), + Xmin = double.Parse(parts[IDX_XMIN], ci), + Ymin = double.Parse(parts[IDX_YMIN], ci), + GlobalMin = double.Parse(parts[IDX_GMIN], ci), + GlobalMax = double.Parse(parts[IDX_GMAX], ci) + }); + } + catch (Exception e) + { + Debug.LogWarning($"[GeoTileAddressablesBuilder] Parse error line {i + 1}: {e.Message}"); + } + } + + return tiles; + } + + private static Dictionary BuildHeaderMap(string headerLine) + { + var map = new Dictionary(StringComparer.OrdinalIgnoreCase); + var headers = headerLine.Split(','); + for (int i = 0; i < headers.Length; i++) + map[headers[i].Trim()] = i; + return map; + } + + private static bool HasAll(Dictionary map, string[] keys) + { + foreach (var key in keys) + { + if (!map.ContainsKey(key)) + return false; + } + return true; + } +} diff --git a/Assets/Scripts/Editor/GeoTileAddressablesBuilder.cs.meta b/Assets/Scripts/Editor/GeoTileAddressablesBuilder.cs.meta new file mode 100644 index 0000000..1a31c29 --- /dev/null +++ b/Assets/Scripts/Editor/GeoTileAddressablesBuilder.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6cd42659539662ebfaeb5b8d10d5ad73 \ No newline at end of file diff --git a/Assets/Scripts/Editor/GeoTilePrefabImporter.cs b/Assets/Scripts/Editor/GeoTilePrefabImporter.cs index 3b2f933..514ee7e 100644 --- a/Assets/Scripts/Editor/GeoTilePrefabImporter.cs +++ b/Assets/Scripts/Editor/GeoTilePrefabImporter.cs @@ -21,7 +21,7 @@ public class GeoTilePrefabImporter : EditorWindow private string enhancedTreesDir = "Assets/GeoData/trees_enhanced"; // Output settings - private string prefabOutputDir = "Assets/GeoData/TilePrefabs"; + private string prefabOutputDir = "Assets/TilePrefabs"; private bool overwriteExisting = false; // Terrain settings diff --git a/Assets/Scripts/Editor/MissingScriptUtility.cs b/Assets/Scripts/Editor/MissingScriptUtility.cs new file mode 100644 index 0000000..8f1721f --- /dev/null +++ b/Assets/Scripts/Editor/MissingScriptUtility.cs @@ -0,0 +1,138 @@ +#if UNITY_EDITOR +using System.Collections.Generic; +using System.Text; +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; + +public static class MissingScriptUtility +{ + [MenuItem("Tools/Diagnostics/Find Missing Scripts in Open Scenes")] + public static void FindMissingScriptsInOpenScenes() + { + int missingCount = 0; + var reported = new HashSet(); + + foreach (var scene in GetLoadedScenes()) + { + foreach (var root in scene.GetRootGameObjects()) + ScanHierarchy(root, ref missingCount, reported); + } + + Debug.Log($"[MissingScriptUtility] Missing scripts found: {missingCount}"); + } + + [MenuItem("Tools/Diagnostics/Find Missing Scripts in Prefabs")] + public static void FindMissingScriptsInPrefabs() + { + var prefabGuids = AssetDatabase.FindAssets("t:Prefab"); + int missingCount = 0; + + for (int i = 0; i < prefabGuids.Length; i++) + { + var path = AssetDatabase.GUIDToAssetPath(prefabGuids[i]); + EditorUtility.DisplayProgressBar("Scanning Prefabs", path, (float)i / prefabGuids.Length); + + var root = PrefabUtility.LoadPrefabContents(path); + if (root == null) + continue; + + ScanHierarchy(root, ref missingCount, null, path); + PrefabUtility.UnloadPrefabContents(root); + } + + EditorUtility.ClearProgressBar(); + Debug.Log($"[MissingScriptUtility] Missing scripts found in prefabs: {missingCount}"); + } + + [MenuItem("Tools/Diagnostics/Remove Missing Scripts in Open Scenes")] + public static void RemoveMissingScriptsInOpenScenes() + { + int removed = 0; + + foreach (var scene in GetLoadedScenes()) + { + foreach (var root in scene.GetRootGameObjects()) + removed += GameObjectUtility.RemoveMonoBehavioursWithMissingScript(root); + } + + if (removed > 0) + EditorSceneManager.MarkAllScenesDirty(); + + Debug.Log($"[MissingScriptUtility] Removed missing scripts: {removed}"); + } + + [MenuItem("Tools/Diagnostics/Remove Missing Scripts in Prefabs")] + public static void RemoveMissingScriptsInPrefabs() + { + var prefabGuids = AssetDatabase.FindAssets("t:Prefab"); + int removed = 0; + + for (int i = 0; i < prefabGuids.Length; i++) + { + var path = AssetDatabase.GUIDToAssetPath(prefabGuids[i]); + EditorUtility.DisplayProgressBar("Cleaning Prefabs", path, (float)i / prefabGuids.Length); + + var root = PrefabUtility.LoadPrefabContents(path); + if (root == null) + continue; + + int removedInPrefab = GameObjectUtility.RemoveMonoBehavioursWithMissingScript(root); + if (removedInPrefab > 0) + PrefabUtility.SaveAsPrefabAsset(root, path); + + removed += removedInPrefab; + PrefabUtility.UnloadPrefabContents(root); + } + + EditorUtility.ClearProgressBar(); + if (removed > 0) + AssetDatabase.SaveAssets(); + + Debug.Log($"[MissingScriptUtility] Removed missing scripts in prefabs: {removed}"); + } + + private static IEnumerable GetLoadedScenes() + { + for (int i = 0; i < SceneManager.sceneCount; i++) + { + var scene = SceneManager.GetSceneAt(i); + if (scene.isLoaded) + yield return scene; + } + } + + private static void ScanHierarchy(GameObject go, ref int missingCount, HashSet reported, string assetPath = null) + { + var components = go.GetComponents(); + for (int i = 0; i < components.Length; i++) + { + if (components[i] == null) + { + missingCount++; + if (reported == null || reported.Add(go)) + { + var label = string.IsNullOrWhiteSpace(assetPath) ? "scene object" : $"prefab {assetPath}"; + Debug.LogWarning($"[MissingScriptUtility] Missing script on {label}: {GetHierarchyPath(go.transform)}"); + } + break; + } + } + + foreach (Transform child in go.transform) + ScanHierarchy(child.gameObject, ref missingCount, reported); + } + + private static string GetHierarchyPath(Transform transform) + { + var sb = new StringBuilder(transform.name); + while (transform.parent != null) + { + transform = transform.parent; + sb.Insert(0, transform.name + "/"); + } + return sb.ToString(); + } +} +#endif diff --git a/Assets/Scripts/Editor/MissingScriptUtility.cs.meta b/Assets/Scripts/Editor/MissingScriptUtility.cs.meta new file mode 100644 index 0000000..97473fd --- /dev/null +++ b/Assets/Scripts/Editor/MissingScriptUtility.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 203230cc591896b4caa395c2a5681573 \ No newline at end of file diff --git a/Assets/Scripts/Editor/OpenXRQuestSetup.cs b/Assets/Scripts/Editor/OpenXRQuestSetup.cs new file mode 100644 index 0000000..9872dc6 --- /dev/null +++ b/Assets/Scripts/Editor/OpenXRQuestSetup.cs @@ -0,0 +1,107 @@ +using UnityEditor; +using UnityEditor.XR.Management; +using UnityEditor.XR.Management.Metadata; +using UnityEngine; +using UnityEngine.XR.Management; +#if XR_COMPOSITION_LAYERS +using UnityEngine.XR.OpenXR; +using UnityEngine.XR.OpenXR.Features.CompositionLayers; +#endif + +namespace DTrierFlood.Editor +{ + static class OpenXRQuestSetup + { + const string GeneralSettingsPath = "Assets/XR/XRGeneralSettingsPerBuildTarget.asset"; + const string OpenXRLoaderType = "UnityEngine.XR.OpenXR.OpenXRLoader"; + + [MenuItem("Tools/XR/Setup OpenXR for Quest (No Meta SDK)")] + static void Setup() + { + var generalSettings = EnsureGeneralSettingsAsset(); + EnsureBuildTarget(generalSettings, BuildTargetGroup.Android); +#if XR_COMPOSITION_LAYERS + EnableCompositionLayersFeature(BuildTargetGroup.Android); + EnableCompositionLayersFeature(BuildTargetGroup.Standalone); +#endif + + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + + Debug.Log("OpenXR is configured for Android. Build the project for Quest using OpenXR."); + } + + static XRGeneralSettingsPerBuildTarget EnsureGeneralSettingsAsset() + { + var settings = AssetDatabase.LoadAssetAtPath(GeneralSettingsPath); + if (settings != null) + { + EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, settings, true); + return settings; + } + + if (!AssetDatabase.IsValidFolder("Assets/XR")) + { + AssetDatabase.CreateFolder("Assets", "XR"); + } + + settings = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(settings, GeneralSettingsPath); + EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, settings, true); + EditorUtility.SetDirty(settings); + return settings; + } + + static void EnsureBuildTarget(XRGeneralSettingsPerBuildTarget settings, BuildTargetGroup targetGroup) + { + if (!settings.HasSettingsForBuildTarget(targetGroup)) + { + settings.CreateDefaultSettingsForBuildTarget(targetGroup); + } + + if (!settings.HasManagerSettingsForBuildTarget(targetGroup)) + { + settings.CreateDefaultManagerSettingsForBuildTarget(targetGroup); + } + + var generalSettings = settings.SettingsForBuildTarget(targetGroup); + if (generalSettings != null) + { + generalSettings.InitManagerOnStart = true; + EditorUtility.SetDirty(generalSettings); + } + + var managerSettings = settings.ManagerSettingsForBuildTarget(targetGroup); + if (managerSettings != null) + { + XRPackageMetadataStore.AssignLoader(managerSettings, OpenXRLoaderType, targetGroup); + EditorUtility.SetDirty(managerSettings); + } + + EditorUtility.SetDirty(settings); + } + +#if XR_COMPOSITION_LAYERS + static void EnableCompositionLayersFeature(BuildTargetGroup targetGroup) + { + var settings = OpenXRSettings.GetSettingsForBuildTargetGroup(targetGroup); + if (settings == null) + { + Debug.LogWarning($"OpenXR settings not found for {targetGroup}."); + return; + } + + var feature = settings.GetFeature(); + if (feature == null) + { + Debug.LogWarning($"OpenXR Composition Layers feature not found for {targetGroup}."); + return; + } + + feature.enabled = true; + EditorUtility.SetDirty(feature); + EditorUtility.SetDirty(settings); + } +#endif + } +} diff --git a/Assets/Scripts/Editor/OpenXRQuestSetup.cs.meta b/Assets/Scripts/Editor/OpenXRQuestSetup.cs.meta new file mode 100644 index 0000000..4a79a5d --- /dev/null +++ b/Assets/Scripts/Editor/OpenXRQuestSetup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: bd67663123673d9e5a715676d1c5839a \ No newline at end of file diff --git a/Assets/Scripts/GeoDataUtils/GeoTileAddressablesLoader.cs b/Assets/Scripts/GeoDataUtils/GeoTileAddressablesLoader.cs new file mode 100644 index 0000000..d5106bc --- /dev/null +++ b/Assets/Scripts/GeoDataUtils/GeoTileAddressablesLoader.cs @@ -0,0 +1,261 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; +using UnityEngine.AddressableAssets; +using UnityEngine.ResourceManagement.AsyncOperations; + +public class GeoTileAddressablesLoader : MonoBehaviour +{ + [Header("References")] + [SerializeField] private Transform player; + [SerializeField] private Transform tilesParent; + + [Header("Paths")] + [SerializeField] private string tileBundleFolderName = "TileBundles"; + [SerializeField] private string manifestFileName = "TileManifest.json"; + [SerializeField] private string buildTargetFolderOverride = ""; + + [Header("Streaming")] + [SerializeField] private float loadRadiusMeters = 1500f; + [SerializeField] private float unloadRadiusMeters = 2000f; + [SerializeField] private float updateInterval = 0.5f; + [SerializeField] private int maxConcurrentLoads = 2; + [SerializeField] private bool verboseLogging = false; + + private TileManifest manifest; + private readonly Dictionary tiles = new Dictionary(); + private readonly Dictionary loaded = new Dictionary(); + private readonly HashSet loading = new HashSet(); + private readonly HashSet queued = new HashSet(); + private readonly Queue loadQueue = new Queue(); + + private bool initialized; + private float nextUpdateTime; + + private void OnValidate() + { + if (unloadRadiusMeters < loadRadiusMeters) + unloadRadiusMeters = loadRadiusMeters; + if (maxConcurrentLoads < 1) + maxConcurrentLoads = 1; + if (updateInterval < 0.05f) + updateInterval = 0.05f; + } + + private void Awake() + { + if (tilesParent == null) + { + var parent = new GameObject("Geo_Tile_Addressables"); + tilesParent = parent.transform; + } + } + + private void Start() + { + if (player == null && Camera.main != null) + player = Camera.main.transform; + + StartCoroutine(Initialize()); + } + + private IEnumerator Initialize() + { + var buildTargetFolder = string.IsNullOrWhiteSpace(buildTargetFolderOverride) + ? GetBuildTargetFolderName() + : buildTargetFolderOverride; + + var basePath = Path.Combine(Application.persistentDataPath, tileBundleFolderName, buildTargetFolder); + var manifestPath = Path.Combine(basePath, manifestFileName); + + Log($"Initializing loader. BasePath={basePath}"); + Log($"ManifestPath={manifestPath}"); + + if (!File.Exists(manifestPath)) + { + Debug.LogError($"[GeoTileAddressablesLoader] Manifest not found: {manifestPath}"); + yield break; + } + + manifest = JsonUtility.FromJson(File.ReadAllText(manifestPath)); + if (manifest == null || manifest.tiles == null || manifest.tiles.Length == 0) + { + Debug.LogError("[GeoTileAddressablesLoader] Manifest is empty or invalid."); + yield break; + } + + tiles.Clear(); + foreach (var tile in manifest.tiles) + { + if (!string.IsNullOrWhiteSpace(tile.tileId)) + tiles[tile.tileId] = tile; + } + + Log($"Manifest loaded. Tiles={tiles.Count} CatalogFile={manifest.catalogFile}"); + + var catalogPath = Path.Combine(basePath, manifest.catalogFile); + if (!File.Exists(catalogPath)) + { + Debug.LogError($"[GeoTileAddressablesLoader] Catalog not found: {catalogPath}"); + yield break; + } + + Log($"Loading catalog: {catalogPath}"); + var handle = Addressables.LoadContentCatalogAsync(ToFileUri(catalogPath), true); + yield return handle; + + if (handle.Status != AsyncOperationStatus.Succeeded) + { + Debug.LogError($"[GeoTileAddressablesLoader] Catalog load failed: {handle.OperationException}"); + yield break; + } + + Log("Catalog loaded successfully."); + initialized = true; + nextUpdateTime = Time.time; + } + + private void Update() + { + if (!initialized || player == null) + return; + + if (Time.time < nextUpdateTime) + return; + + nextUpdateTime = Time.time + updateInterval; + + UpdateTileSet(); + ProcessQueue(); + } + + private void UpdateTileSet() + { + var playerPos = player.position; + var tileSize = manifest.tileSizeMeters; + + foreach (var kvp in tiles) + { + var tile = kvp.Value; + var tileCenter = new Vector3( + tile.offsetX + tileSize * 0.5f, + tile.baseY, + tile.offsetZ + tileSize * 0.5f); + var distance = Vector2.Distance( + new Vector2(playerPos.x, playerPos.z), + new Vector2(tileCenter.x, tileCenter.z)); + + if (distance <= loadRadiusMeters) + { + EnqueueTileLoad(tile.tileId); + } + else if (distance >= unloadRadiusMeters) + { + UnloadTile(tile.tileId); + } + } + } + + private void EnqueueTileLoad(string tileId) + { + if (loaded.ContainsKey(tileId) || loading.Contains(tileId) || queued.Contains(tileId)) + return; + + loadQueue.Enqueue(tileId); + queued.Add(tileId); + } + + private void ProcessQueue() + { + while (loading.Count < maxConcurrentLoads && loadQueue.Count > 0) + { + var tileId = loadQueue.Dequeue(); + queued.Remove(tileId); + StartLoad(tileId); + } + } + + private void StartLoad(string tileId) + { + if (!tiles.TryGetValue(tileId, out var tile)) + return; + + loading.Add(tileId); + Log($"Loading tile {tileId}..."); + + var handle = Addressables.InstantiateAsync(tileId, tilesParent); + handle.Completed += op => + { + loading.Remove(tileId); + + if (op.Status != AsyncOperationStatus.Succeeded) + { + Debug.LogError($"[GeoTileAddressablesLoader] Load failed for {tileId}: {op.OperationException}"); + return; + } + + var instance = op.Result; + instance.name = tileId; + instance.transform.position = new Vector3(tile.offsetX, tile.baseY, tile.offsetZ); + loaded[tileId] = instance; + Log($"Loaded tile {tileId}. LoadedCount={loaded.Count}"); + }; + } + + private void UnloadTile(string tileId) + { + if (!loaded.TryGetValue(tileId, out var instance)) + return; + + Addressables.ReleaseInstance(instance); + loaded.Remove(tileId); + Log($"Unloaded tile {tileId}. LoadedCount={loaded.Count}"); + } + + private static string GetBuildTargetFolderName() + { + switch (Application.platform) + { + case RuntimePlatform.Android: + return "Android"; + case RuntimePlatform.WindowsPlayer: + case RuntimePlatform.WindowsEditor: + return "Windows"; + case RuntimePlatform.LinuxPlayer: + case RuntimePlatform.LinuxEditor: + return "Linux"; + case RuntimePlatform.OSXPlayer: + case RuntimePlatform.OSXEditor: + return "OSX"; + default: + return "Android"; + } + } + + private static string ToFileUri(string path) + { + var normalized = path.Replace("\\", "/"); + return normalized.StartsWith("file://", StringComparison.OrdinalIgnoreCase) + ? normalized + : "file://" + normalized; + } + + private void OnDestroy() + { + foreach (var instance in loaded.Values) + Addressables.ReleaseInstance(instance); + + loaded.Clear(); + loading.Clear(); + queued.Clear(); + loadQueue.Clear(); + } + + private void Log(string message) + { + if (verboseLogging) + Debug.Log($"[GeoTileAddressablesLoader] {message}"); + } +} diff --git a/Assets/Scripts/GeoDataUtils/GeoTileAddressablesLoader.cs.meta b/Assets/Scripts/GeoDataUtils/GeoTileAddressablesLoader.cs.meta new file mode 100644 index 0000000..f717853 --- /dev/null +++ b/Assets/Scripts/GeoDataUtils/GeoTileAddressablesLoader.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 14a2150bfb293bd30a7128844a9755da \ No newline at end of file diff --git a/Assets/Scripts/GeoDataUtils/TileManifest.cs b/Assets/Scripts/GeoDataUtils/TileManifest.cs new file mode 100644 index 0000000..aac3afe --- /dev/null +++ b/Assets/Scripts/GeoDataUtils/TileManifest.cs @@ -0,0 +1,20 @@ +using System; + +[Serializable] +public class TileManifest +{ + public string buildTarget; + public string catalogFile; + public string catalogHashFile; + public float tileSizeMeters = 1000f; + public TileEntry[] tiles; +} + +[Serializable] +public class TileEntry +{ + public string tileId; + public float offsetX; + public float offsetZ; + public float baseY; +} diff --git a/Assets/Scripts/GeoDataUtils/TileManifest.cs.meta b/Assets/Scripts/GeoDataUtils/TileManifest.cs.meta new file mode 100644 index 0000000..435f637 --- /dev/null +++ b/Assets/Scripts/GeoDataUtils/TileManifest.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d6d4f64953318e53fbf3d8d6333f31b6 \ No newline at end of file diff --git a/Assets/Settings/Mobile_RPAsset.asset b/Assets/Settings/Mobile_RPAsset.asset index ab8cc15..b3e00d9 100644 --- a/Assets/Settings/Mobile_RPAsset.asset +++ b/Assets/Settings/Mobile_RPAsset.asset @@ -101,9 +101,9 @@ MonoBehaviour: m_Keys: [] m_Values: m_PrefilteringModeMainLightShadows: 3 - m_PrefilteringModeAdditionalLight: 3 + m_PrefilteringModeAdditionalLight: 4 m_PrefilteringModeAdditionalLightShadows: 0 - m_PrefilterXRKeywords: 1 + m_PrefilterXRKeywords: 0 m_PrefilteringModeForwardPlus: 0 m_PrefilteringModeDeferredRendering: 0 m_PrefilteringModeScreenSpaceOcclusion: 0 diff --git a/Assets/Settings/PC_Renderer.asset b/Assets/Settings/PC_Renderer.asset index 475b02e..0c6ff8e 100644 --- a/Assets/Settings/PC_Renderer.asset +++ b/Assets/Settings/PC_Renderer.asset @@ -70,7 +70,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f62c9c65cf3354c93be831c8bc075510, type: 3} m_Name: ScreenSpaceAmbientOcclusion m_EditorClassIdentifier: - m_Active: 1 + m_Active: 0 m_Settings: AOMethod: 0 Downsample: 0 diff --git a/Assets/XR/Settings/OpenXR Package Settings.asset b/Assets/XR/Settings/OpenXR Package Settings.asset index 394fbaf..b724085 100644 --- a/Assets/XR/Settings/OpenXR Package Settings.asset +++ b/Assets/XR/Settings/OpenXR Package Settings.asset @@ -548,7 +548,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6096094d69d82cc40947df806f66ab34, type: 3} m_Name: OpenXRCompositionLayersFeature Standalone m_EditorClassIdentifier: Unity.XR.OpenXR::UnityEngine.XR.OpenXR.Features.CompositionLayers.OpenXRCompositionLayersFeature - m_enabled: 0 + m_enabled: 1 nameUi: Composition Layers Support version: 1.0.0 featureIdInternal: com.unity.openxr.feature.compositionlayers @@ -594,7 +594,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6096094d69d82cc40947df806f66ab34, type: 3} m_Name: OpenXRCompositionLayersFeature Android m_EditorClassIdentifier: Unity.XR.OpenXR::UnityEngine.XR.OpenXR.Features.CompositionLayers.OpenXRCompositionLayersFeature - m_enabled: 0 + m_enabled: 1 nameUi: Composition Layers Support version: 1.0.0 featureIdInternal: com.unity.openxr.feature.compositionlayers @@ -928,7 +928,7 @@ MonoBehaviour: - {fileID: -7172283588313398206} customLoaderName: m_renderMode: 1 - m_latencyOptimization: 0 + m_latencyOptimization: 1 m_autoColorSubmissionMode: 1 m_colorSubmissionModes: m_List: 00000000 @@ -989,19 +989,19 @@ MonoBehaviour: targetDevices: - visibleName: Quest manifestName: quest - enabled: 0 + enabled: 1 - visibleName: Quest 2 manifestName: quest2 - enabled: 0 + enabled: 1 - visibleName: Quest Pro manifestName: cambria - enabled: 0 + enabled: 1 - visibleName: Quest 3 manifestName: eureka enabled: 1 - visibleName: Quest 3S manifestName: quest3s - enabled: 0 + enabled: 1 forceRemoveInternetPermission: 0 m_symmetricProjection: 0 m_foveatedRenderingApi: 0 @@ -1377,7 +1377,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 2b7365b139f7aec43b23d26b7a48b5a6, type: 3} m_Name: MetaQuestTouchPlusControllerProfile Android m_EditorClassIdentifier: Unity.XR.OpenXR::UnityEngine.XR.OpenXR.Features.Interactions.MetaQuestTouchPlusControllerProfile - m_enabled: 0 + m_enabled: 1 nameUi: Meta Quest Touch Plus Controller Profile version: 0.0.1 featureIdInternal: com.unity.openxr.feature.input.metaquestplus diff --git a/Assets/XR/XRGeneralSettingsPerBuildTarget.asset b/Assets/XR/XRGeneralSettingsPerBuildTarget.asset index 3117622..57df6f2 100644 --- a/Assets/XR/XRGeneralSettingsPerBuildTarget.asset +++ b/Assets/XR/XRGeneralSettingsPerBuildTarget.asset @@ -1,5 +1,19 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7350331264532487781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d236b7d11115f2143951f1e14045df39, type: 3} + m_Name: Android Settings + m_EditorClassIdentifier: Unity.XR.Management::UnityEngine.XR.Management.XRGeneralSettings + m_LoaderManagerInstance: {fileID: 7288541399756181229} + m_InitManagerOnStart: 1 --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 @@ -12,5 +26,23 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d2dc886499c26824283350fa532d087d, type: 3} m_Name: XRGeneralSettingsPerBuildTarget m_EditorClassIdentifier: Unity.XR.Management.Editor::UnityEditor.XR.Management.XRGeneralSettingsPerBuildTarget - Keys: - Values: [] + Keys: 07000000 + Values: + - {fileID: -7350331264532487781} +--- !u!114 &7288541399756181229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4c3631f5e58749a59194e0cf6baf6d5, type: 3} + m_Name: Android Providers + m_EditorClassIdentifier: Unity.XR.Management::UnityEngine.XR.Management.XRManagerSettings + m_RequiresSettingsUpdate: 0 + m_AutomaticLoading: 0 + m_AutomaticRunning: 0 + m_Loaders: + - {fileID: 11400000, guid: 368e1d121d8c5cf4295b728f3b587367, type: 2} diff --git a/Assets/_Recovery/0.unity b/Assets/_Recovery/0.unity deleted file mode 100644 index aac7817..0000000 Binary files a/Assets/_Recovery/0.unity and /dev/null differ diff --git a/Notes/GEOTILELOADING_PLAN.md b/Notes/GEOTILELOADING_PLAN.md new file mode 100644 index 0000000..f8c8fd8 --- /dev/null +++ b/Notes/GEOTILELOADING_PLAN.md @@ -0,0 +1,30 @@ +# Geo Tile Loading Plan + +## Goal +Stream terrain tiles on Quest from local storage using Addressables (one bundle per tile) with an offline-first workflow. + +## Approach +- Build tiles as Addressables (one bundle per tile). +- Store bundles + catalog + manifest under `Application.persistentDataPath/TileBundles/`. +- Runtime loader reads `TileManifest.json`, loads the local Addressables catalog, and streams tiles in/out by distance. + +## Implementation Steps +1) Tile prefabs + - Generate tile prefabs into `Assets/TilePrefabs`. +2) Addressables build + - Build Android content via `Tools > Geo Tiles > Build Tile Addressables (Android)`. + - Output expected in `ServerData/TileBundles/Android`. +3) Device staging + - Push folder to Quest: + - `adb -s 2G0YC1ZG2V00BV push ServerData/TileBundles/Android/. /sdcard/Android/data/com.dtrierflood.dtrierflood/files/TileBundles/Android/` +4) Runtime loader + - Use `GeoTileAddressablesLoader` in the scene. + - Assign `player` to XR rig camera. + - Adjust load/unload radii for memory/perf. + +## Debug Checklist +- Verify `TileManifest.json` is on device. +- Verify catalog file exists (`catalog_*.bin`). +- Enable `verboseLogging` on the loader to see init + tile loads. +- Check device logs with `adb logcat -s Unity`. + diff --git a/Notes/GEOTILELOADING_PROGRESS.md b/Notes/GEOTILELOADING_PROGRESS.md new file mode 100644 index 0000000..25291f0 --- /dev/null +++ b/Notes/GEOTILELOADING_PROGRESS.md @@ -0,0 +1,43 @@ +# Geo Tile Loading Progress + +## Current State +- Unity version: 6000.3.5f1 running locally (Unity manages ProjectVersion file). +- Addressables 2.8.0 added. +- Prefab output default: `Assets/TilePrefabs`. +- Addressables build produces per-tile bundles in `ServerData/TileBundles/Android`. +- Runtime loader: `GeoTileAddressablesLoader` with verbose logging toggle. +- Quest package: `com.dtrierflood.dtrierflood`. + +## Scene Setup +- Scene: `Assets/Scenes/TestArea1.unity`. +- Kept: `XR Origin (XR Rig)`, `XR Interaction Manager`, `EventSystem`. +- Added: + - `GeoTileLoader` with `GeoTileAddressablesLoader`. + - `GeoTileContainer` assigned to `tilesParent`. + - `player` assigned to `XR Origin (XR Rig)/Camera Offset/Main Camera`. + +## Device Staging +- Quest path: + - `/sdcard/Android/data/com.dtrierflood.dtrierflood/files/TileBundles/Android` +- Contents confirmed: + - `catalog_0.1.0.bin` + - `catalog_0.1.0.hash` + - `TileManifest.json` + - 10 tile bundles + +## Known Issues +- Loader previously failed due to missing `TileManifest.json`. +- After pushing manifest, need to re-run and verify tile loads. +- Device logs are noisy with system entries; focus on `[GeoTileAddressablesLoader]` lines. + +## Next Steps +1) Run on Quest with `verboseLogging` enabled to confirm: + - manifest + catalog load + - tile load events +2) If tiles still fail: + - Validate `catalog_*.bin` path in `TileManifest.json`. + - Confirm Addressables address keys match prefab names. +3) Optional: + - Add a manual "load tile by ID" debug action. + - Add Unity menu to push bundles to Quest via adb. + diff --git a/Packages/manifest.json b/Packages/manifest.json index 08f63d0..e70d206 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,12 +1,11 @@ { "dependencies": { "com.unity.2d.enhancers": "1.0.0", - "com.unity.ai.assistant": "1.5.0-pre.1", - "com.unity.ai.generators": "1.5.0-pre.1", + "com.unity.addressables": "2.8.0", "com.unity.ai.inference": "2.4.1", "com.unity.ai.navigation": "2.0.9", "com.unity.cloud.gltfast": "6.15.1", - "com.unity.collab-proxy": "2.10.2", + "com.unity.collab-proxy": "2.11.2", "com.unity.ide.rider": "3.0.38", "com.unity.ide.visualstudio": "2.0.26", "com.unity.inputsystem": "1.17.0", @@ -16,7 +15,8 @@ "com.unity.timeline": "1.8.10", "com.unity.ugui": "2.0.0", "com.unity.visualscripting": "1.9.9", - "com.unity.xr.compositionlayers": "2.2.0", + "com.unity.xr.arfoundation": "6.3.2", + "com.unity.xr.compositionlayers": "2.3.0", "com.unity.xr.hands": "1.7.2", "com.unity.xr.interaction.toolkit": "3.3.1", "com.unity.xr.openxr": "1.16.1", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 1c48e83..cdc4af7 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -29,32 +29,33 @@ }, "com.unity.2d.sprite": { "version": "1.0.0", - "depth": 1, + "depth": 2, "source": "builtin", "dependencies": {} }, - "com.unity.ai.assistant": { - "version": "1.5.0-pre.1", + "com.unity.addressables": { + "version": "2.8.0", "depth": 0, "source": "registry", "dependencies": { - "com.unity.ai.generators": "1.5.0-pre.1", - "com.unity.serialization": "3.1.1", - "com.unity.modules.uielements": "1.0.0", - "com.unity.nuget.newtonsoft-json": "3.2.1", - "com.unity.modules.unitywebrequest": "1.0.0" + "com.unity.profiling.core": "1.0.2", + "com.unity.test-framework": "1.4.5", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.scriptablebuildpipeline": "2.5.1", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0" }, "url": "https://packages.unity.com" }, "com.unity.ai.generators": { - "version": "1.5.0-pre.1", - "depth": 0, + "version": "1.0.0-pre.12", + "depth": 1, "source": "registry", "dependencies": { - "com.unity.2d.sprite": "1.0.0", - "com.unity.ai.toolkit": "1.5.0-pre.1", + "com.unity.ai.toolkit": "1.0.0-pre.12", "com.unity.mathematics": "1.3.2", - "com.unity.cloud.gltfast": "6.14.1", "com.unity.nuget.newtonsoft-json": "3.2.1" }, "url": "https://packages.unity.com" @@ -82,8 +83,8 @@ "url": "https://packages.unity.com" }, "com.unity.ai.toolkit": { - "version": "1.5.0-pre.1", - "depth": 1, + "version": "1.0.0-pre.12", + "depth": 2, "source": "registry", "dependencies": { "com.unity.nuget.newtonsoft-json": "3.2.1" @@ -114,7 +115,7 @@ "url": "https://packages.unity.com" }, "com.unity.collab-proxy": { - "version": "2.10.2", + "version": "2.11.2", "depth": 0, "source": "registry", "dependencies": {}, @@ -145,6 +146,13 @@ }, "url": "https://packages.unity.com" }, + "com.unity.editorcoroutines": { + "version": "1.0.1", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, "com.unity.ext.nunit": { "version": "2.0.5", "depth": 1, @@ -207,6 +215,13 @@ "dependencies": {}, "url": "https://packages.unity.com" }, + "com.unity.profiling.core": { + "version": "1.0.3", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, "com.unity.render-pipelines.core": { "version": "17.3.0", "depth": 1, @@ -239,6 +254,16 @@ "com.unity.render-pipelines.core": "17.0.3" } }, + "com.unity.scriptablebuildpipeline": { + "version": "2.5.1", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.4.5", + "com.unity.modules.assetbundle": "1.0.0" + }, + "url": "https://packages.unity.com" + }, "com.unity.searcher": { "version": "4.9.4", "depth": 2, @@ -246,16 +271,6 @@ "dependencies": {}, "url": "https://packages.unity.com" }, - "com.unity.serialization": { - "version": "3.1.3", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.burst": "1.7.2", - "com.unity.collections": "2.4.2" - }, - "url": "https://packages.unity.com" - }, "com.unity.settings-manager": { "version": "2.1.1", "depth": 1, @@ -323,8 +338,26 @@ }, "url": "https://packages.unity.com" }, + "com.unity.xr.arfoundation": { + "version": "6.3.2", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ugui": "2.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.inputsystem": "1.6.3", + "com.unity.mathematics": "1.2.6", + "com.unity.xr.core-utils": "2.5.1", + "com.unity.xr.management": "4.4.0", + "com.unity.editorcoroutines": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + }, + "url": "https://packages.unity.com" + }, "com.unity.xr.compositionlayers": { - "version": "2.2.0", + "version": "2.3.0", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index e817211..ead7f1c 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -8,10 +8,20 @@ EditorBuildSettings: - enabled: 0 path: Assets/Scenes/SampleScene.unity guid: 99c9720ab356a0642a771bea13969a05 - - enabled: 1 + - enabled: 0 path: Assets/Scenes/TestArea.unity guid: 1fa8205536b2f5b42a11ca1c26adf810 + - enabled: 0 + path: Assets/Samples/XR Interaction Toolkit/3.3.1/AR Starter Assets/ARDemoScene.unity + guid: da4db6c21a88243878fecfe160c1be3b + - enabled: 0 + path: Assets/Samples/XR Interaction Toolkit/3.3.1/Starter Assets/DemoScene.unity + guid: 319dafa5c80f29f428dc1e0d03f04177 + - enabled: 1 + path: Assets/Scenes/TestArea1.unity + guid: 798ff6a8bc8cc60d69669ccee591d0fa m_configObjects: + com.unity.addressableassets: {fileID: 11400000, guid: 07ae6632a66180d158acd5a9ec27367a, type: 2} com.unity.dt.app-ui: {fileID: 11400000, guid: 1b1c20d82303e4b5781c3ef50ac1449f, type: 2} com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3} com.unity.xr.arfoundation.simulation_settings: {fileID: 11400000, guid: 259d3ad4b6eeaa3378559ced8c31a7d2, type: 2} diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 31ad5de..b8b61b1 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -167,7 +167,7 @@ PlayerSettings: androidMaxAspectRatio: 2.4 androidMinAspectRatio: 1 applicationIdentifier: - Android: com.UnityTechnologies.com.unity.template.urpblank + Android: com.dtrierflood.dtrierflood Standalone: com.Unity-Technologies.com.unity.template.urp-blank iPhone: com.Unity-Technologies.com.unity.template.urp-blank buildNumber: @@ -177,7 +177,7 @@ PlayerSettings: tvOS: 0 overrideDefaultApplicationIdentifier: 1 AndroidBundleVersionCode: 1 - AndroidMinSdkVersion: 25 + AndroidMinSdkVersion: 34 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 AndroidPreferredDataLocation: 1 @@ -398,6 +398,66 @@ PlayerSettings: m_SubKind: App Store - m_BuildTarget: Android m_Icons: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 0 + m_SubKind: - m_Textures: [] m_Width: 432 m_Height: 432 @@ -428,66 +488,6 @@ PlayerSettings: m_Height: 81 m_Kind: 2 m_SubKind: - - m_Textures: [] - m_Width: 192 - m_Height: 192 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 144 - m_Height: 144 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 96 - m_Height: 96 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 72 - m_Height: 72 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 48 - m_Height: 48 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 36 - m_Height: 36 - m_Kind: 1 - m_SubKind: - - m_Textures: [] - m_Width: 192 - m_Height: 192 - m_Kind: 0 - m_SubKind: - - m_Textures: [] - m_Width: 144 - m_Height: 144 - m_Kind: 0 - m_SubKind: - - m_Textures: [] - m_Width: 96 - m_Height: 96 - m_Kind: 0 - m_SubKind: - - m_Textures: [] - m_Width: 72 - m_Height: 72 - m_Kind: 0 - m_SubKind: - - m_Textures: [] - m_Width: 48 - m_Height: 48 - m_Kind: 0 - m_SubKind: - - m_Textures: [] - m_Width: 36 - m_Height: 36 - m_Kind: 0 - m_SubKind: - m_BuildTarget: tvOS m_Icons: - m_Textures: [] @@ -830,8 +830,9 @@ PlayerSettings: webWasm2023: 0 webEnableSubmoduleStrippingCompatibility: 0 scriptingDefineSymbols: - Android: APP_UI_EDITOR_ONLY - Standalone: APP_UI_EDITOR_ONLY + Android: APP_UI_EDITOR_ONLY;USE_INPUT_SYSTEM_POSE_CONTROL;USE_STICK_CONTROL_THUMBSTICKS + Standalone: APP_UI_EDITOR_ONLY;USE_INPUT_SYSTEM_POSE_CONTROL;USE_STICK_CONTROL_THUMBSTICKS + Windows Store Apps: USE_INPUT_SYSTEM_POSE_CONTROL;USE_STICK_CONTROL_THUMBSTICKS additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index e726370..6447acb 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 6000.3.3f1 -m_EditorVersionWithRevision: 6000.3.3f1 (ef04196de0d6) +m_EditorVersion: 6000.3.5f1 +m_EditorVersionWithRevision: 6000.3.5f1 (a1ec4b2f2d19) diff --git a/ProjectSettings/ScriptableBuildPipeline.json b/ProjectSettings/ScriptableBuildPipeline.json new file mode 100644 index 0000000..dfa4f08 --- /dev/null +++ b/ProjectSettings/ScriptableBuildPipeline.json @@ -0,0 +1,14 @@ +{ + "useBuildCacheServer": false, + "cacheServerHost": "", + "cacheServerPort": 8126, + "threadedArchiving": true, + "logCacheMiss": false, + "logAssetWarnings": true, + "slimWriteResults": true, + "maximumCacheSize": 20, + "useDetailedBuildLog": false, + "useV2Hasher": true, + "fileIDHashSeed": 0, + "prefabPackedHeaderSize": 2 +} \ No newline at end of file