├── .github └── FUNDING.yml ├── .gitignore ├── Carter Games.meta ├── Carter Games ├── Multi Scene.meta └── Multi Scene │ ├── Art.meta │ ├── Art │ ├── File Icons.meta │ ├── File Icons │ │ ├── T_MultiScene_BookIcon.png │ │ ├── T_MultiScene_BookIcon.png.meta │ │ ├── T_MultiScene_IndexIcon.png │ │ ├── T_MultiScene_IndexIcon.png.meta │ │ ├── T_MultiScene_Logo_Transparent.png │ │ ├── T_MultiScene_Logo_Transparent.png.meta │ │ ├── T_MultiScene_ScriptIcon.png │ │ ├── T_MultiScene_ScriptIcon.png.meta │ │ ├── T_MultiScene_SettingsIcon.png │ │ ├── T_MultiScene_SettingsIcon.png.meta │ │ ├── T_MultiScene_Transparent_Logo.png │ │ └── T_MultiScene_Transparent_Logo.png.meta │ ├── Logos.meta │ └── Logos │ │ ├── T_MultiScene_CarterGamesBanner.png │ │ ├── T_MultiScene_CarterGamesBanner.png.meta │ │ ├── T_MultiScene_Logo.png │ │ └── T_MultiScene_Logo.png.meta │ ├── Code.meta │ ├── Code │ ├── Editor.meta │ ├── Editor │ │ ├── CarterGames.MultiScene.Editor.asmdef │ │ ├── CarterGames.MultiScene.Editor.asmdef.meta │ │ ├── Custom Editors.meta │ │ ├── Custom Editors │ │ │ ├── Inspectors.meta │ │ │ ├── Inspectors │ │ │ │ ├── AssetGlobalRuntimeSettingsEditor.cs │ │ │ │ ├── AssetGlobalRuntimeSettingsEditor.cs.meta │ │ │ │ ├── SceneGroupEditor.cs │ │ │ │ └── SceneGroupEditor.cs.meta │ │ │ ├── Property Drawers.meta │ │ │ ├── Property Drawers │ │ │ │ ├── DefaultGroupCategoryDrawer.cs │ │ │ │ ├── DefaultGroupCategoryDrawer.cs.meta │ │ │ │ ├── GroupCategoryDrawer.cs │ │ │ │ └── GroupCategoryDrawer.cs.meta │ │ │ ├── Windows.meta │ │ │ └── Windows │ │ │ │ ├── SceneGroupLoader.cs │ │ │ │ └── SceneGroupLoader.cs.meta │ │ ├── Settings Provider.meta │ │ ├── Settings Provider │ │ │ ├── MultiSceneSettingsProvider.cs │ │ │ └── MultiSceneSettingsProvider.cs.meta │ │ ├── Systems.meta │ │ ├── Systems │ │ │ ├── Asset Index.meta │ │ │ ├── Asset Index │ │ │ │ ├── AssetIndexEditor.cs │ │ │ │ ├── AssetIndexEditor.cs.meta │ │ │ │ ├── AssetIndexHandler.cs │ │ │ │ └── AssetIndexHandler.cs.meta │ │ │ ├── Detection.meta │ │ │ ├── Detection │ │ │ │ ├── EditorEvtDetector.cs │ │ │ │ └── EditorEvtDetector.cs.meta │ │ │ ├── Editor Events.meta │ │ │ ├── Editor Events │ │ │ │ ├── MultiSceneEditorEvents.cs │ │ │ │ └── MultiSceneEditorEvents.cs.meta │ │ │ ├── Helpers.meta │ │ │ ├── Helpers │ │ │ │ ├── DisplayExtensions.cs │ │ │ │ ├── DisplayExtensions.cs.meta │ │ │ │ ├── EditorSceneHelper.cs │ │ │ │ └── EditorSceneHelper.cs.meta │ │ │ ├── Initialize.meta │ │ │ ├── Initialize │ │ │ │ ├── AssetInitializer.cs │ │ │ │ ├── AssetInitializer.cs.meta │ │ │ │ ├── AssetReloadHandler.cs │ │ │ │ ├── AssetReloadHandler.cs.meta │ │ │ │ ├── IAssetEditorInitialize.cs │ │ │ │ ├── IAssetEditorInitialize.cs.meta │ │ │ │ ├── IAssetEditorReload.cs │ │ │ │ └── IAssetEditorReload.cs.meta │ │ │ ├── Version Validation.meta │ │ │ └── Version Validation │ │ │ │ ├── VersionAutoCheck.cs │ │ │ │ ├── VersionAutoCheck.cs.meta │ │ │ │ ├── VersionChecker.cs │ │ │ │ ├── VersionChecker.cs.meta │ │ │ │ ├── VersionData.cs │ │ │ │ ├── VersionData.cs.meta │ │ │ │ ├── VersionEditorGUI.cs │ │ │ │ ├── VersionEditorGUI.cs.meta │ │ │ │ ├── VersionInfo.cs │ │ │ │ ├── VersionInfo.cs.meta │ │ │ │ ├── VersionNumber.cs │ │ │ │ ├── VersionNumber.cs.meta │ │ │ │ ├── VersionPacket.cs │ │ │ │ └── VersionPacket.cs.meta │ │ ├── Utility.meta │ │ └── Utility │ │ │ ├── AssetVersionData.cs │ │ │ ├── AssetVersionData.cs.meta │ │ │ ├── Editor Method Aid.meta │ │ │ ├── Editor Method Aid │ │ │ ├── InterfaceHelper.cs │ │ │ ├── InterfaceHelper.cs.meta │ │ │ ├── SerializedPropertyHelper.cs │ │ │ └── SerializedPropertyHelper.cs.meta │ │ │ ├── Per User Settings.meta │ │ │ ├── Per User Settings │ │ │ ├── PerUserSettings.cs │ │ │ ├── PerUserSettings.cs.meta │ │ │ ├── SettingType.cs │ │ │ └── SettingType.cs.meta │ │ │ ├── Scriptable Assets.meta │ │ │ ├── Scriptable Assets │ │ │ ├── FileEditorUtil.cs │ │ │ ├── FileEditorUtil.cs.meta │ │ │ ├── ScriptableObjectInitialize.cs │ │ │ ├── ScriptableObjectInitialize.cs.meta │ │ │ ├── ScriptableRef.cs │ │ │ └── ScriptableRef.cs.meta │ │ │ ├── UtilEditor.cs │ │ │ └── UtilEditor.cs.meta │ ├── Runtime.meta │ └── Runtime │ │ ├── CarterGames.MultiScene.Runtime.asmdef │ │ ├── CarterGames.MultiScene.Runtime.asmdef.meta │ │ ├── Common.meta │ │ ├── Common │ │ ├── CarterGames.MultiScene.Common.asmdef │ │ ├── CarterGames.MultiScene.Common.asmdef.meta │ │ ├── Evt.cs │ │ ├── Evt.cs.meta │ │ ├── Ref.cs │ │ ├── Ref.cs.meta │ │ ├── Serialization.meta │ │ └── Serialization │ │ │ ├── Dictionary.meta │ │ │ └── Dictionary │ │ │ ├── SerializableDIctionary.cs │ │ │ ├── SerializableDIctionary.cs.meta │ │ │ ├── SerialzableKeyValuePair.cs │ │ │ └── SerialzableKeyValuePair.cs.meta │ │ ├── Logger.meta │ │ ├── Logger │ │ ├── MultiSceneLogger.cs │ │ └── MultiSceneLogger.cs.meta │ │ ├── MultiSceneManager.cs │ │ ├── MultiSceneManager.cs.meta │ │ ├── Systems.meta │ │ ├── Systems │ │ ├── Assets.meta │ │ ├── Assets │ │ │ ├── AssetAccessor.cs │ │ │ ├── AssetAccessor.cs.meta │ │ │ ├── Groups.meta │ │ │ ├── Groups │ │ │ │ ├── DefaultGroupCategory.cs │ │ │ │ ├── DefaultGroupCategory.cs.meta │ │ │ │ ├── GroupCategory.cs │ │ │ │ └── GroupCategory.cs.meta │ │ │ ├── Index.meta │ │ │ ├── Index │ │ │ │ ├── AssetIndex.cs │ │ │ │ └── AssetIndex.cs.meta │ │ │ ├── MultiSceneAsset.cs │ │ │ ├── MultiSceneAsset.cs.meta │ │ │ ├── MultiSceneMono.cs │ │ │ ├── MultiSceneMono.cs.meta │ │ │ ├── Settings.meta │ │ │ └── Settings │ │ │ │ ├── AssetGlobalRuntimeSettings.cs │ │ │ │ └── AssetGlobalRuntimeSettings.cs.meta │ │ ├── Attributes.meta │ │ ├── Attributes │ │ │ ├── Ordered Attribute.meta │ │ │ └── Ordered Attribute │ │ │ │ ├── MultiSceneOrderedAttribute.cs │ │ │ │ ├── MultiSceneOrderedAttribute.cs.meta │ │ │ │ ├── OrderedHandler.cs │ │ │ │ ├── OrderedHandler.cs.meta │ │ │ │ ├── OrderedListenerData.cs │ │ │ │ └── OrderedListenerData.cs.meta │ │ ├── Built-In Extensions.meta │ │ ├── Built-In Extensions │ │ │ ├── Do Not Destroy.meta │ │ │ └── Do Not Destroy │ │ │ │ ├── DoNotDestroyAccessor.cs │ │ │ │ └── DoNotDestroyAccessor.cs.meta │ │ ├── Listeners.meta │ │ ├── Listeners │ │ │ ├── IMultiSceneAwake.cs │ │ │ ├── IMultiSceneAwake.cs.meta │ │ │ ├── IMultiSceneEnable.cs │ │ │ ├── IMultiSceneEnable.cs.meta │ │ │ ├── IMultiSceneStart.cs │ │ │ ├── IMultiSceneStart.cs.meta │ │ │ ├── ListenerHandler.cs │ │ │ └── ListenerHandler.cs.meta │ │ ├── Popup Dialogues.meta │ │ ├── Popup Dialogues │ │ │ ├── MultiScenePopups.cs │ │ │ └── MultiScenePopups.cs.meta │ │ ├── Referencing.meta │ │ ├── Referencing │ │ │ ├── MultiSceneRef.cs │ │ │ └── MultiSceneRef.cs.meta │ │ ├── Scene Groups.meta │ │ ├── Scene Groups │ │ │ ├── SceneData.cs │ │ │ ├── SceneData.cs.meta │ │ │ ├── SceneGroup.cs │ │ │ ├── SceneGroup.cs.meta │ │ │ ├── SceneGroupEditorLoadMode.cs │ │ │ └── SceneGroupEditorLoadMode.cs.meta │ │ ├── Scene Loader.meta │ │ └── Scene Loader │ │ │ ├── BaseMultiSceneLoader.cs │ │ │ └── BaseMultiSceneLoader.cs.meta │ │ ├── Utility.meta │ │ └── Utility │ │ ├── Per User Settings.meta │ │ └── Per User Settings │ │ ├── PerUserSettingsRuntime.cs │ │ └── PerUserSettingsRuntime.cs.meta │ ├── Extensions.meta │ ├── Extensions │ ├── Packages.meta │ └── Packages │ │ ├── Multi Scene URP Extension 0.3.0.unitypackage │ │ └── Multi Scene URP Extension 0.3.0.unitypackage.meta │ ├── ~Documentation.meta │ └── ~Documentation │ ├── Multi Scene Documentation (Offline).pdf │ └── Multi Scene Documentation (Offline).pdf.meta ├── LICENSE └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: cartergames # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Mm]emoryCaptures/ 12 | /Multi Scene Development Project/ 13 | 14 | # Asset meta data should only be ignored when the corresponding asset is also ignored 15 | !/[Aa]ssets/**/*.meta 16 | 17 | # Uncomment this line if you wish to ignore the asset store tools plugin 18 | # /[Aa]ssets/AssetStoreTools* 19 | 20 | # Autogenerated Jetbrains Rider plugin 21 | [Aa]ssets/Plugins/Editor/JetBrains* 22 | 23 | # Visual Studio cache directory 24 | .vs/ 25 | 26 | # Gradle cache directory 27 | .gradle/ 28 | 29 | # Autogenerated VS/MD/Consulo solution and project files 30 | ExportedObj/ 31 | .consulo/ 32 | *.csproj 33 | *.unityproj 34 | *.sln 35 | *.suo 36 | *.tmp 37 | *.user 38 | *.userprefs 39 | *.pidb 40 | *.booproj 41 | *.svd 42 | *.pdb 43 | *.mdb 44 | *.opendb 45 | *.VC.db 46 | 47 | # Unity3D generated meta files 48 | *.pidb.meta 49 | *.pdb.meta 50 | *.mdb.meta 51 | 52 | # Unity3D generated file on crash reports 53 | sysinfo.txt 54 | 55 | # Builds 56 | *.apk 57 | 58 | # Crashlytics generated file 59 | crashlytics-build.properties 60 | 61 | *.idea 62 | -------------------------------------------------------------------------------- /Carter Games.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3a9dc99e7c62f514897c3ae3ee6bf75f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3385257a5b985f342ad675e16dda8868 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 29bfdb7fa93d4f43b5baa22b69d73a11 3 | timeCreated: 1716403118 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65708761e7334de98b14062fc6e08dce 3 | timeCreated: 1716403622 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_BookIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CarterGames/MultiScene/900a01f4eaa85619208060a576a7246a03c1c60a/Carter Games/Multi Scene/Art/File Icons/T_MultiScene_BookIcon.png -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_BookIcon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65a64cdde33454b4dae05f56cefd732a 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: 1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: -1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 2 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 512 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 1 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 512 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 1 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | - serializedVersion: 3 91 | buildTarget: Android 92 | maxTextureSize: 512 93 | resizeAlgorithm: 0 94 | textureFormat: -1 95 | textureCompression: 1 96 | compressionQuality: 50 97 | crunchedCompression: 1 98 | allowsAlphaSplitting: 0 99 | overridden: 0 100 | androidETC2FallbackOverride: 0 101 | forceMaximumCompressionQuality_BC6H_BC7: 0 102 | - serializedVersion: 3 103 | buildTarget: WebGL 104 | maxTextureSize: 512 105 | resizeAlgorithm: 0 106 | textureFormat: -1 107 | textureCompression: 1 108 | compressionQuality: 50 109 | crunchedCompression: 1 110 | allowsAlphaSplitting: 0 111 | overridden: 0 112 | androidETC2FallbackOverride: 0 113 | forceMaximumCompressionQuality_BC6H_BC7: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 121 | internalID: 0 122 | vertices: [] 123 | indices: 124 | edges: [] 125 | weights: [] 126 | secondaryTextures: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_IndexIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CarterGames/MultiScene/900a01f4eaa85619208060a576a7246a03c1c60a/Carter Games/Multi Scene/Art/File Icons/T_MultiScene_IndexIcon.png -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_IndexIcon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 929be2b78e1df4c438fc55fe2ae52463 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: 1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: -1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 2 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 512 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 1 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 512 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 1 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | - serializedVersion: 3 91 | buildTarget: Android 92 | maxTextureSize: 512 93 | resizeAlgorithm: 0 94 | textureFormat: -1 95 | textureCompression: 1 96 | compressionQuality: 50 97 | crunchedCompression: 1 98 | allowsAlphaSplitting: 0 99 | overridden: 0 100 | androidETC2FallbackOverride: 0 101 | forceMaximumCompressionQuality_BC6H_BC7: 0 102 | - serializedVersion: 3 103 | buildTarget: WebGL 104 | maxTextureSize: 512 105 | resizeAlgorithm: 0 106 | textureFormat: -1 107 | textureCompression: 1 108 | compressionQuality: 50 109 | crunchedCompression: 1 110 | allowsAlphaSplitting: 0 111 | overridden: 0 112 | androidETC2FallbackOverride: 0 113 | forceMaximumCompressionQuality_BC6H_BC7: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 121 | internalID: 0 122 | vertices: [] 123 | indices: 124 | edges: [] 125 | weights: [] 126 | secondaryTextures: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_Logo_Transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CarterGames/MultiScene/900a01f4eaa85619208060a576a7246a03c1c60a/Carter Games/Multi Scene/Art/File Icons/T_MultiScene_Logo_Transparent.png -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_Logo_Transparent.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ec937c9290cbd3c4c94eb84467545a97 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: 1 36 | aniso: 1 37 | mipBias: 0 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 0 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 2 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 256 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 256 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 0 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | - serializedVersion: 3 91 | buildTarget: iPhone 92 | maxTextureSize: 256 93 | resizeAlgorithm: 0 94 | textureFormat: -1 95 | textureCompression: 1 96 | compressionQuality: 50 97 | crunchedCompression: 0 98 | allowsAlphaSplitting: 0 99 | overridden: 0 100 | androidETC2FallbackOverride: 0 101 | forceMaximumCompressionQuality_BC6H_BC7: 0 102 | - serializedVersion: 3 103 | buildTarget: Android 104 | maxTextureSize: 256 105 | resizeAlgorithm: 0 106 | textureFormat: -1 107 | textureCompression: 1 108 | compressionQuality: 50 109 | crunchedCompression: 0 110 | allowsAlphaSplitting: 0 111 | overridden: 0 112 | androidETC2FallbackOverride: 0 113 | forceMaximumCompressionQuality_BC6H_BC7: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 5e97eb03825dee720800000000000000 121 | internalID: 0 122 | vertices: [] 123 | indices: 124 | edges: [] 125 | weights: [] 126 | secondaryTextures: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_ScriptIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CarterGames/MultiScene/900a01f4eaa85619208060a576a7246a03c1c60a/Carter Games/Multi Scene/Art/File Icons/T_MultiScene_ScriptIcon.png -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_ScriptIcon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f82d46e5e26774d4baf6eb999379a0dd 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: 1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: -1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 2 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 512 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 1 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 512 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 1 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | - serializedVersion: 3 91 | buildTarget: Android 92 | maxTextureSize: 512 93 | resizeAlgorithm: 0 94 | textureFormat: -1 95 | textureCompression: 1 96 | compressionQuality: 50 97 | crunchedCompression: 1 98 | allowsAlphaSplitting: 0 99 | overridden: 0 100 | androidETC2FallbackOverride: 0 101 | forceMaximumCompressionQuality_BC6H_BC7: 0 102 | - serializedVersion: 3 103 | buildTarget: WebGL 104 | maxTextureSize: 512 105 | resizeAlgorithm: 0 106 | textureFormat: -1 107 | textureCompression: 1 108 | compressionQuality: 50 109 | crunchedCompression: 1 110 | allowsAlphaSplitting: 0 111 | overridden: 0 112 | androidETC2FallbackOverride: 0 113 | forceMaximumCompressionQuality_BC6H_BC7: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 121 | internalID: 0 122 | vertices: [] 123 | indices: 124 | edges: [] 125 | weights: [] 126 | secondaryTextures: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_SettingsIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CarterGames/MultiScene/900a01f4eaa85619208060a576a7246a03c1c60a/Carter Games/Multi Scene/Art/File Icons/T_MultiScene_SettingsIcon.png -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_SettingsIcon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aa08e3ea1b2fe054487e19b0e6cd65ae 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: 1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: -1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 2 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 512 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 1 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 512 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 1 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | - serializedVersion: 3 91 | buildTarget: Android 92 | maxTextureSize: 512 93 | resizeAlgorithm: 0 94 | textureFormat: -1 95 | textureCompression: 1 96 | compressionQuality: 50 97 | crunchedCompression: 1 98 | allowsAlphaSplitting: 0 99 | overridden: 0 100 | androidETC2FallbackOverride: 0 101 | forceMaximumCompressionQuality_BC6H_BC7: 0 102 | - serializedVersion: 3 103 | buildTarget: WebGL 104 | maxTextureSize: 512 105 | resizeAlgorithm: 0 106 | textureFormat: -1 107 | textureCompression: 1 108 | compressionQuality: 50 109 | crunchedCompression: 1 110 | allowsAlphaSplitting: 0 111 | overridden: 0 112 | androidETC2FallbackOverride: 0 113 | forceMaximumCompressionQuality_BC6H_BC7: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 121 | internalID: 0 122 | vertices: [] 123 | indices: 124 | edges: [] 125 | weights: [] 126 | secondaryTextures: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_Transparent_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CarterGames/MultiScene/900a01f4eaa85619208060a576a7246a03c1c60a/Carter Games/Multi Scene/Art/File Icons/T_MultiScene_Transparent_Logo.png -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/File Icons/T_MultiScene_Transparent_Logo.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ec937c9290cbd3c4c94eb84467545a97 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: 1 36 | aniso: 1 37 | mipBias: 0 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 0 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 2 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 256 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 0 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 256 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 0 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | - serializedVersion: 3 91 | buildTarget: iPhone 92 | maxTextureSize: 256 93 | resizeAlgorithm: 0 94 | textureFormat: -1 95 | textureCompression: 1 96 | compressionQuality: 50 97 | crunchedCompression: 0 98 | allowsAlphaSplitting: 0 99 | overridden: 0 100 | androidETC2FallbackOverride: 0 101 | forceMaximumCompressionQuality_BC6H_BC7: 0 102 | - serializedVersion: 3 103 | buildTarget: Android 104 | maxTextureSize: 256 105 | resizeAlgorithm: 0 106 | textureFormat: -1 107 | textureCompression: 1 108 | compressionQuality: 50 109 | crunchedCompression: 0 110 | allowsAlphaSplitting: 0 111 | overridden: 0 112 | androidETC2FallbackOverride: 0 113 | forceMaximumCompressionQuality_BC6H_BC7: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 5e97eb03825dee720800000000000000 121 | internalID: 0 122 | vertices: [] 123 | indices: 124 | edges: [] 125 | weights: [] 126 | secondaryTextures: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/Logos.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0dc4f0e6460e44209685e1e4c31a4e6c 3 | timeCreated: 1716403625 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/Logos/T_MultiScene_CarterGamesBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CarterGames/MultiScene/900a01f4eaa85619208060a576a7246a03c1c60a/Carter Games/Multi Scene/Art/Logos/T_MultiScene_CarterGamesBanner.png -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/Logos/T_MultiScene_CarterGamesBanner.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 58a0085126b61ae4bb235ea61474bd07 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: 1 36 | aniso: 1 37 | mipBias: 0 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 0 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 0 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 2 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 256 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 1 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 256 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 1 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | - serializedVersion: 3 91 | buildTarget: Android 92 | maxTextureSize: 256 93 | resizeAlgorithm: 0 94 | textureFormat: -1 95 | textureCompression: 1 96 | compressionQuality: 50 97 | crunchedCompression: 1 98 | allowsAlphaSplitting: 0 99 | overridden: 0 100 | androidETC2FallbackOverride: 0 101 | forceMaximumCompressionQuality_BC6H_BC7: 0 102 | - serializedVersion: 3 103 | buildTarget: iPhone 104 | maxTextureSize: 256 105 | resizeAlgorithm: 0 106 | textureFormat: -1 107 | textureCompression: 1 108 | compressionQuality: 50 109 | crunchedCompression: 1 110 | allowsAlphaSplitting: 0 111 | overridden: 0 112 | androidETC2FallbackOverride: 0 113 | forceMaximumCompressionQuality_BC6H_BC7: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 121 | internalID: 0 122 | vertices: [] 123 | indices: 124 | edges: [] 125 | weights: [] 126 | secondaryTextures: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/Logos/T_MultiScene_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CarterGames/MultiScene/900a01f4eaa85619208060a576a7246a03c1c60a/Carter Games/Multi Scene/Art/Logos/T_MultiScene_Logo.png -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Art/Logos/T_MultiScene_Logo.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7099966836e44914d9db3e9403627b31 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: 1 37 | mipBias: -100 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: -1 41 | nPOTScale: 0 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 1 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 1 54 | spriteTessellationDetail: -1 55 | textureType: 2 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | flipbookRows: 1 59 | flipbookColumns: 1 60 | maxTextureSizeSet: 0 61 | compressionQualitySet: 0 62 | textureFormatSet: 0 63 | ignorePngGamma: 0 64 | applyGammaDecoding: 0 65 | platformSettings: 66 | - serializedVersion: 3 67 | buildTarget: DefaultTexturePlatform 68 | maxTextureSize: 512 69 | resizeAlgorithm: 0 70 | textureFormat: -1 71 | textureCompression: 1 72 | compressionQuality: 50 73 | crunchedCompression: 1 74 | allowsAlphaSplitting: 0 75 | overridden: 0 76 | androidETC2FallbackOverride: 0 77 | forceMaximumCompressionQuality_BC6H_BC7: 0 78 | - serializedVersion: 3 79 | buildTarget: Standalone 80 | maxTextureSize: 512 81 | resizeAlgorithm: 0 82 | textureFormat: -1 83 | textureCompression: 1 84 | compressionQuality: 50 85 | crunchedCompression: 1 86 | allowsAlphaSplitting: 0 87 | overridden: 0 88 | androidETC2FallbackOverride: 0 89 | forceMaximumCompressionQuality_BC6H_BC7: 0 90 | - serializedVersion: 3 91 | buildTarget: Android 92 | maxTextureSize: 512 93 | resizeAlgorithm: 0 94 | textureFormat: -1 95 | textureCompression: 1 96 | compressionQuality: 50 97 | crunchedCompression: 1 98 | allowsAlphaSplitting: 0 99 | overridden: 0 100 | androidETC2FallbackOverride: 0 101 | forceMaximumCompressionQuality_BC6H_BC7: 0 102 | - serializedVersion: 3 103 | buildTarget: WebGL 104 | maxTextureSize: 512 105 | resizeAlgorithm: 0 106 | textureFormat: -1 107 | textureCompression: 1 108 | compressionQuality: 50 109 | crunchedCompression: 1 110 | allowsAlphaSplitting: 0 111 | overridden: 0 112 | androidETC2FallbackOverride: 0 113 | forceMaximumCompressionQuality_BC6H_BC7: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 121 | internalID: 0 122 | vertices: [] 123 | indices: 124 | edges: [] 125 | weights: [] 126 | secondaryTextures: [] 127 | spritePackingTag: 128 | pSDRemoveMatte: 0 129 | pSDShowRemoveMatteOption: 0 130 | userData: 131 | assetBundleName: 132 | assetBundleVariant: 133 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d67cd8744406485592e00608118b69eb 3 | timeCreated: 1716403478 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8768dc760a2d82740ba11d0fe74b2be6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/CarterGames.MultiScene.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CarterGames.MultiScene.Editor", 3 | "rootNamespace": "CarterGames.Experimental.MultiScene.Editor", 4 | "references": [ 5 | "GUID:dbcc0ddf7638b7144b4a852688291428", 6 | "GUID:7577fcaa29c957d43a7833215b0209ed" 7 | ], 8 | "includePlatforms": [ 9 | "Editor" 10 | ], 11 | "excludePlatforms": [], 12 | "allowUnsafeCode": false, 13 | "overrideReferences": false, 14 | "precompiledReferences": [], 15 | "autoReferenced": true, 16 | "defineConstraints": [], 17 | "versionDefines": [], 18 | "noEngineReferences": false 19 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/CarterGames.MultiScene.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f87678a7e2b8e594dbc9c0da0f2d688b 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 454ae7520ee9b83459b1616a5b3275c7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors/Inspectors.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3eb684f4750542aea3e2c9a90a43e437 3 | timeCreated: 1662062353 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors/Inspectors/AssetGlobalRuntimeSettingsEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c7327dae71694992bfed288d3eb21d61 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors/Inspectors/SceneGroupEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 11f2dde539f6cf34694598b921214ca9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors/Property Drawers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8be8b49c3f9d43f897d3824b60d4815d 3 | timeCreated: 1662017123 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors/Property Drawers/DefaultGroupCategoryDrawer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEditor; 25 | using UnityEngine; 26 | 27 | namespace CarterGames.Experimental.MultiScene.Editor 28 | { 29 | /// 30 | /// Draws a group category in a single row for each of use. 31 | /// 32 | [CustomPropertyDrawer(typeof(DefaultGroupCategory))] 33 | public sealed class DefaultGroupCategoryDrawer : PropertyDrawer 34 | { 35 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 36 | | Fields 37 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 38 | 39 | private static SerializedProperty nameProp; 40 | private static SerializedProperty indexProp; 41 | 42 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 43 | | Drawer Method 44 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 45 | 46 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 47 | { 48 | label = EditorGUI.BeginProperty(position, label, property); 49 | position = EditorGUI.PrefixLabel(position, label); 50 | 51 | nameProp = property.Fpr("groupName"); 52 | indexProp = property.Fpr("groupIndex"); 53 | 54 | EditorGUI.BeginChangeCheck(); 55 | 56 | int indent = EditorGUI.indentLevel; 57 | EditorGUI.indentLevel = 0; 58 | 59 | var leftRect = new Rect(position.x, position.y, (position.width / 4) * 3 - 1.5f, EditorGUIUtility.singleLineHeight); 60 | var rightRect = new Rect(position.x + position.width / 4 * 3 + 1.5f, position.y, (position.width / 4) - 1.5f, EditorGUIUtility.singleLineHeight); 61 | 62 | GUI.enabled = false; 63 | EditorGUI.PropertyField(leftRect, nameProp, GUIContent.none); 64 | GUI.enabled = true; 65 | EditorGUI.PropertyField(rightRect, indexProp, GUIContent.none); 66 | 67 | if (EditorGUI.EndChangeCheck()) 68 | { 69 | property.serializedObject.ApplyModifiedProperties(); 70 | } 71 | 72 | EditorGUI.indentLevel = indent; 73 | EditorGUI.EndProperty(); 74 | } 75 | } 76 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors/Property Drawers/DefaultGroupCategoryDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 886ed522ba4845b1a875e3a48d6d3bd1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors/Property Drawers/GroupCategoryDrawer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEditor; 25 | using UnityEngine; 26 | 27 | namespace CarterGames.Experimental.MultiScene.Editor 28 | { 29 | /// 30 | /// Draws a group category in a single row for each of use. 31 | /// 32 | [CustomPropertyDrawer(typeof(GroupCategory))] 33 | public sealed class GroupCategoryDrawer : PropertyDrawer 34 | { 35 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 36 | | Fields 37 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 38 | 39 | private static SerializedProperty nameProp; 40 | private static SerializedProperty indexProp; 41 | 42 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 43 | | Drawer Method 44 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 45 | 46 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 47 | { 48 | label = EditorGUI.BeginProperty(position, label, property); 49 | position = EditorGUI.PrefixLabel(position, label); 50 | 51 | nameProp = property.Fpr("groupName"); 52 | indexProp = property.Fpr("groupIndex"); 53 | 54 | EditorGUI.BeginChangeCheck(); 55 | 56 | int indent = EditorGUI.indentLevel; 57 | EditorGUI.indentLevel = 0; 58 | 59 | var leftRect = new Rect(position.x, position.y, (position.width / 4) * 3 - 1.5f, EditorGUIUtility.singleLineHeight); 60 | var rightRect = new Rect(position.x + position.width / 4 * 3 + 1.5f, position.y, (position.width / 4) - 1.5f, EditorGUIUtility.singleLineHeight); 61 | 62 | EditorGUI.PropertyField(leftRect, nameProp, GUIContent.none); 63 | EditorGUI.PropertyField(rightRect, indexProp, GUIContent.none); 64 | 65 | if (EditorGUI.EndChangeCheck()) 66 | { 67 | property.serializedObject.ApplyModifiedProperties(); 68 | } 69 | 70 | EditorGUI.indentLevel = indent; 71 | EditorGUI.EndProperty(); 72 | } 73 | } 74 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors/Property Drawers/GroupCategoryDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6fd0d64a6add4aa6addfa958aab34a9e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors/Windows.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 727e9420aa8b4d3fa94e995331041604 3 | timeCreated: 1716405347 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Custom Editors/Windows/SceneGroupLoader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 885917583a24c714a9159cd4a363e736 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Settings Provider.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a84c0661feab9d64da31b4202110bea9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Settings Provider/MultiSceneSettingsProvider.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e1abe62a8f84c2c918295e1a25cf4a0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d7e25a90612d9943baf3a2577894dbf 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Asset Index.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 77e931cb523241c0a2722c6f627f3914 3 | timeCreated: 1716404639 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Asset Index/AssetIndexEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2fd1ce0370e455fad56aa18e16118fc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Asset Index/AssetIndexHandler.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 095afb09356f4679ad06b0c4b9d3caa7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Detection.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e793f25a1fd848c0bd1c047c32ba71e3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Detection/EditorEvtDetector.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEditor; 25 | 26 | namespace CarterGames.Experimental.MultiScene.Editor 27 | { 28 | /// 29 | /// Detects events in the engine and processes them for use in the asset. 30 | /// 31 | public sealed class EditorEvtDetector : AssetPostprocessor, IAssetEditorReload 32 | { 33 | private static string[] importedAssetsCache; 34 | 35 | 36 | /// 37 | /// Runs when any file has finished being added to the project. 38 | /// 39 | /// array of all imported assets. 40 | /// array of all deleted assets. 41 | /// array of all moved assets. 42 | /// array of all moved assets to a new path. 43 | private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) 44 | { 45 | importedAssetsCache = importedAssets; 46 | } 47 | 48 | 49 | public void OnEditorReloaded() 50 | { 51 | if (importedAssetsCache == null) return; 52 | 53 | foreach (var asset in importedAssetsCache) 54 | { 55 | if (!asset.Contains(".asset")) continue; 56 | MultiSceneEditorEvents.SceneGroups.OnSceneGroupCreated.Raise(); 57 | return; 58 | } 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Detection/EditorEvtDetector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b142a28805c4909b3899939c3984935 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Editor Events.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d859190e98075fa41aeab745e6d3aabf 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Editor Events/MultiSceneEditorEvents.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using CarterGames.Common; 25 | 26 | namespace CarterGames.Experimental.MultiScene.Editor 27 | { 28 | /// 29 | /// Container class for events used to broadcast info in the editor space only... 30 | /// 31 | public struct MultiSceneEditorEvents 32 | { 33 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 34 | | Scene Group Events 35 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 36 | 37 | /// 38 | /// Contains any events that relate to scene group categories... 39 | /// 40 | public struct SceneGroups 41 | { 42 | /// 43 | /// Raises when a category is changed... 44 | /// 45 | public static readonly Evt OnSceneGroupCreated = new Evt(); 46 | 47 | 48 | /// 49 | /// Raises when a category is changed... 50 | /// 51 | public static readonly Evt OnSceneGroupCategoryChanged = new Evt(); 52 | 53 | 54 | /// 55 | /// Raises when a scene group is loaded in the editor only... 56 | /// 57 | public static readonly Evt OnSceneGroupLoadedInEditor = new Evt(); 58 | } 59 | 60 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 61 | | Settings Events 62 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 63 | 64 | /// 65 | /// Contains any events that relate to the settings asset being modified... 66 | /// 67 | public struct Settings 68 | { 69 | /// 70 | /// Raises when the settings asset is modified... 71 | /// 72 | public static readonly Evt OnSettingChanged = new Evt(); 73 | 74 | 75 | /// 76 | /// Raises when a new settings asset is generated after an existing one is deleted... 77 | /// 78 | public static readonly Evt OnSettingsAssetRegenerated = new Evt(); 79 | 80 | 81 | /// 82 | /// Raises when the group categories are edited in the settings window... 83 | /// 84 | public static readonly Evt OnGroupCategoriesChanged = new Evt(); 85 | } 86 | } 87 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Editor Events/MultiSceneEditorEvents.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4fdf41f8d27842c9ad6db7e891d120a4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Helpers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: da1dbe3de8d9670418d547a0ef191a6c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Helpers/DisplayExtensions.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System.Collections.Generic; 25 | using System.Linq; 26 | 27 | namespace CarterGames.Experimental.MultiScene.Editor 28 | { 29 | /// 30 | /// An extension class to get help formatting of the group categories & scene groups into something legible... 31 | /// 32 | public static class DisplayExtensions 33 | { 34 | /// 35 | /// Converts the scene group names into a usable array of options to select from... 36 | /// 37 | /// The strings to edit 38 | /// The edited list as an array... 39 | public static string[] ToDisplayOptions(this List input) 40 | { 41 | var array = new string[input.Count]; 42 | 43 | for (var i = 0; i < input.Count; i++) 44 | { 45 | array[i] = (input[i].Equals(string.Empty) 46 | ? "Unassigned (Blank)" 47 | : input[i]); 48 | } 49 | 50 | return array; 51 | } 52 | 53 | 54 | /// 55 | /// Converts the scene group names into a usable array of options to select from... 56 | /// 57 | /// The strings to edit 58 | /// The edited list as an array... 59 | public static string[] ToDisplayOptions(this Dictionary input) 60 | { 61 | var array = new string[input.Count]; 62 | var keys = input.Keys.ToArray(); 63 | 64 | for (var i = 0; i < input.Count; i++) 65 | { 66 | array[i] = (keys[i].Equals(string.Empty) 67 | ? "Unassigned (Blank)" 68 | : keys[i]); 69 | } 70 | 71 | return array; 72 | } 73 | } 74 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Helpers/DisplayExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2cb0ef8199744c76921b79749a039ed6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Helpers/EditorSceneHelper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1881a64eca774725b3d3bfc748f1e88a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Initialize.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 443de8d0c2fd38e469a4d9bb1fefd018 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Initialize/AssetInitializer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System.Linq; 25 | using System.Threading.Tasks; 26 | using CarterGames.Common; 27 | using UnityEditor; 28 | 29 | namespace CarterGames.Experimental.MultiScene.Editor 30 | { 31 | /// 32 | /// Handles any initial listeners in the project for the asset. 33 | /// 34 | public static class AssetInitializer 35 | { 36 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 37 | | Fields 38 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 39 | 40 | // The key for if the asset has been initialized. 41 | private static readonly string AssetInitializeKey = $"{FileEditorUtil.AssetName}_Session_EditorInitialize"; 42 | 43 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 44 | | Properties 45 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 46 | 47 | /// 48 | /// Gets if the asset is initialized or not. 49 | /// 50 | public static bool IsInitialized 51 | { 52 | get => SessionState.GetBool(AssetInitializeKey, false); 53 | private set => SessionState.SetBool(AssetInitializeKey, value); 54 | } 55 | 56 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 57 | | Events 58 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 59 | 60 | /// 61 | /// Is raised when the asset is initialized. 62 | /// 63 | public static readonly Evt Initialized = new Evt(); 64 | 65 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 66 | | Methods 67 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 68 | 69 | /// 70 | /// Initializes the editor logic for the asset when called. 71 | /// 72 | [InitializeOnLoadMethod] 73 | private static void TryInitialize() 74 | { 75 | if (IsInitialized) return; 76 | InitializeEditorClasses(); 77 | } 78 | 79 | 80 | /// 81 | /// Runs through all interfaces for initializing the editor asset logic and runs each in the defined order. 82 | /// 83 | private static async void InitializeEditorClasses() 84 | { 85 | var initClasses = InterfaceHelper.GetAllInterfacesInstancesOfType(); 86 | 87 | if (initClasses.Length > 0) 88 | { 89 | foreach (var init in initClasses.OrderBy(t => t.InitializeOrder)) 90 | { 91 | init.OnEditorInitialized(); 92 | await Task.Yield(); 93 | } 94 | } 95 | 96 | OnAllClassesInitialized(); 97 | } 98 | 99 | 100 | /// 101 | /// Runs any post initialize logic to complete the process. 102 | /// 103 | private static void OnAllClassesInitialized() 104 | { 105 | AssetDatabase.SaveAssets(); 106 | AssetDatabase.Refresh(); 107 | 108 | IsInitialized = true; 109 | Initialized.Raise(); 110 | } 111 | } 112 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Initialize/AssetInitializer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51b6b0dd07b54a61b77aced33d86e313 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Initialize/AssetReloadHandler.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System.Threading.Tasks; 25 | using CarterGames.Common; 26 | using UnityEditor; 27 | using UnityEditor.Callbacks; 28 | 29 | namespace CarterGames.Experimental.MultiScene.Editor 30 | { 31 | /// 32 | /// Handles any reload listeners in the project for the asset. 33 | /// 34 | public static class AssetReloadHandler 35 | { 36 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 37 | | Events 38 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 39 | 40 | /// 41 | /// Raises when the reload has occured. 42 | /// 43 | public static readonly Evt Reloaded = new Evt(); 44 | 45 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 46 | | Methods 47 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 48 | 49 | /// 50 | /// Add subscription to the delay call when scripts reload. 51 | /// 52 | [DidReloadScripts] 53 | private static void FireReloadCalls() 54 | { 55 | if (EditorApplication.isCompiling || EditorApplication.isUpdating) 56 | { 57 | EditorApplication.delayCall -= CallListeners; 58 | EditorApplication.delayCall += CallListeners; 59 | return; 60 | } 61 | 62 | EditorApplication.delayCall -= CallListeners; 63 | EditorApplication.delayCall += CallListeners; 64 | } 65 | 66 | 67 | /// 68 | /// Updates all the listeners when called. 69 | /// 70 | private static async void CallListeners() 71 | { 72 | var reloadClasses = InterfaceHelper.GetAllInterfacesInstancesOfType(); 73 | 74 | if (reloadClasses.Length > 0) 75 | { 76 | foreach (var init in reloadClasses) 77 | { 78 | init.OnEditorReloaded(); 79 | await Task.Yield(); 80 | } 81 | } 82 | 83 | Reloaded.Raise(); 84 | } 85 | } 86 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Initialize/AssetReloadHandler.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 75e3a464fb254ffdb8cb5f4cafe6eef1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Initialize/IAssetEditorInitialize.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | namespace CarterGames.Experimental.MultiScene.Editor 25 | { 26 | public interface IAssetEditorInitialize 27 | { 28 | int InitializeOrder { get; } 29 | void OnEditorInitialized(); 30 | } 31 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Initialize/IAssetEditorInitialize.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7abca68fdc9a99349859efcbf508e336 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Initialize/IAssetEditorReload.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | namespace CarterGames.Experimental.MultiScene.Editor 25 | { 26 | public interface IAssetEditorReload 27 | { 28 | void OnEditorReloaded(); 29 | } 30 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Initialize/IAssetEditorReload.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 36a162b68b534cc09a98445852981a75 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 370e8a67178f44c1b257109a248b69f2 3 | timeCreated: 1716405166 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionAutoCheck.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEditor; 25 | 26 | namespace CarterGames.Experimental.MultiScene.Editor 27 | { 28 | /// 29 | /// Handles the auto update checker for the asset. 30 | /// 31 | [InitializeOnLoad] 32 | public sealed class VersionAutoCheck 33 | { 34 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 35 | | Fields 36 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 37 | 38 | /// 39 | /// The key for the session pref... should be per asset based on the version key to check... 40 | /// 41 | private static readonly string AutoVersionCheckSessionInitKey = $"{VersionInfo.Key.Trim()}_Editor_Settings_AutoVersionCheckRan"; 42 | 43 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 44 | | Constructors 45 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 46 | 47 | /// 48 | /// Runs when the editor is opened or needs to reload. 49 | /// 50 | static VersionAutoCheck() 51 | { 52 | // Ensures that this logic only runs once per editor use, so it doesn't appear when they make a code change etc. 53 | if (SessionState.GetBool(AutoVersionCheckSessionInitKey, false)) return; 54 | EditorApplication.delayCall += OnEditorLoad; 55 | } 56 | 57 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 58 | | Methods 59 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 60 | 61 | /// 62 | /// Runs when the editor has loaded to check for the latest version of the asset. 63 | /// 64 | private static void OnEditorLoad() 65 | { 66 | EditorApplication.delayCall -= OnEditorLoad; 67 | SessionState.SetBool(AutoVersionCheckSessionInitKey, true); 68 | 69 | if (!PerUserSettings.VersionValidationAutoCheckOnLoad) return; 70 | AutoVersionCheckInit(); 71 | } 72 | 73 | 74 | /// 75 | /// Runs the version check logic and listens for its response. 76 | /// 77 | private static void AutoVersionCheckInit() 78 | { 79 | VersionChecker.GetLatestVersions(); 80 | VersionChecker.ResponseReceived.Add(OnVersionCheckResponse); 81 | } 82 | 83 | 84 | /// 85 | /// Runs when the response is received and only shows a new version is available, not if its on the latest. 86 | /// 87 | private static void OnVersionCheckResponse() 88 | { 89 | VersionChecker.ResponseReceived.Remove(OnVersionCheckResponse); 90 | VersionEditorGUI.ShowResponseDialogue(false); 91 | } 92 | } 93 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionAutoCheck.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c1f33e851df428eb3b33e82b34712ff 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionChecker.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using CarterGames.Common; 25 | using UnityEngine; 26 | using UnityEngine.Networking; 27 | 28 | namespace CarterGames.Experimental.MultiScene.Editor 29 | { 30 | /// 31 | /// Handles checking for the latest version. 32 | /// 33 | public static class VersionChecker 34 | { 35 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 36 | | Fields 37 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 38 | 39 | /// 40 | /// The download URL for the latest version. 41 | /// 42 | public static string DownloadURL => VersionInfo.DownloadBaseUrl + Versions.Data.Version; 43 | 44 | 45 | /// 46 | /// Gets if the latest version is this version. 47 | /// 48 | public static bool IsLatestVersion => Versions.Data.Match(VersionInfo.ProjectVersionNumber); 49 | 50 | 51 | /// 52 | /// Gets if the version here is higher that the latest version. 53 | /// 54 | public static bool IsNewerVersion => Versions.Data.IsHigherVersion(VersionInfo.ProjectVersionNumber); 55 | 56 | 57 | /// 58 | /// Gets the version data downloaded. 59 | /// 60 | public static VersionPacket Versions { get; private set; } 61 | 62 | 63 | /// 64 | /// The latest version string. 65 | /// 66 | public static string LatestVersionNumberString => Versions.Data.Version; 67 | 68 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 69 | | Events 70 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 71 | 72 | /// 73 | /// Raises when the data has been downloaded. 74 | /// 75 | public static Evt ResponseReceived { get; private set; } = new Evt(); 76 | 77 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 78 | | Methods 79 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 80 | 81 | /// 82 | /// Gets the latest version data when called. 83 | /// 84 | public static void GetLatestVersions() 85 | { 86 | RequestLatestVersionData(); 87 | } 88 | 89 | 90 | /// 91 | /// Makes the web request & handles the response. 92 | /// 93 | private static void RequestLatestVersionData() 94 | { 95 | var request = UnityWebRequest.Get(VersionInfo.ValidationUrl); 96 | var async = request.SendWebRequest(); 97 | 98 | async.completed += (a) => 99 | { 100 | if (request.result != UnityWebRequest.Result.Success) return; 101 | 102 | Versions = JsonUtility.FromJson(request.downloadHandler.text); 103 | ResponseReceived.Raise(); 104 | }; 105 | } 106 | } 107 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionChecker.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 78d7db4bcbce4994b2ddc033d14adfbe 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionData.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System; 25 | using UnityEngine; 26 | 27 | namespace CarterGames.Experimental.MultiScene.Editor 28 | { 29 | /// 30 | /// A copy of the Json data for each entry stored on the server. 31 | /// 32 | [Serializable] 33 | public sealed class VersionData 34 | { 35 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 36 | | Fields 37 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 38 | 39 | [SerializeField] private string key; 40 | [SerializeField] private string version; 41 | [SerializeField] private string releaseDate; 42 | 43 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 44 | | Properties 45 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 46 | 47 | /// 48 | /// The key for the entry. 49 | /// 50 | public string Key 51 | { 52 | get => key; 53 | set => key = value; 54 | } 55 | 56 | 57 | /// 58 | /// The version for the entry. 59 | /// 60 | public string Version 61 | { 62 | get => version; 63 | set => version = value; 64 | } 65 | 66 | 67 | /// 68 | /// The release date for the entry. 69 | /// 70 | public string ReleaseDate 71 | { 72 | get => releaseDate; 73 | set => releaseDate = value; 74 | } 75 | 76 | 77 | /// 78 | /// The version number for the entry. 79 | /// 80 | public VersionNumber VersionNumber => new VersionNumber(Version); 81 | 82 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 83 | | Methods 84 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 85 | 86 | /// 87 | /// Gets if the entry version number matches the entered string. 88 | /// 89 | /// The version string to compare. 90 | /// If the entry is a match or not on all values (major/minor/patch). 91 | public bool Match(string toCompare) 92 | { 93 | var current = VersionNumber; 94 | var remote = new VersionNumber(toCompare); 95 | 96 | return current.Major.Equals(remote.Major) && 97 | current.Minor.Equals(remote.Minor) && 98 | current.Patch.Equals(remote.Patch); 99 | } 100 | 101 | 102 | /// 103 | /// Gets if the entry is a higher version than the converted version. 104 | /// 105 | /// The version string to compare. 106 | /// If the entry is greater on any (major/minor/patch) value. 107 | public bool IsHigherVersion(string toCompare) 108 | { 109 | var current = VersionNumber; 110 | var remote = new VersionNumber(toCompare); 111 | 112 | if (Match(toCompare)) 113 | { 114 | return false; 115 | } 116 | 117 | if (current.Major < remote.Major) return true; 118 | if (current.Major.Equals(remote.Major) && current.Minor < remote.Minor) return true; 119 | 120 | return current.Major.Equals(remote.Major) && 121 | current.Minor.Equals(remote.Minor) && 122 | current.Patch < remote.Patch; 123 | } 124 | } 125 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 708bb46845e14bbe838d2787cc6389b0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionEditorGUI.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEditor; 25 | using UnityEngine; 26 | 27 | namespace CarterGames.Experimental.MultiScene.Editor 28 | { 29 | /// 30 | /// A helper class for using the version system on editor. 31 | /// 32 | public static class VersionEditorGUI 33 | { 34 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 35 | | Methods 36 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 37 | 38 | /// 39 | /// Draws a check for updates button when called with dialogues to show the results. 40 | /// 41 | public static void DrawCheckForUpdatesButton() 42 | { 43 | if (!GUILayout.Button("Check For Updates", GUILayout.MaxWidth(135))) return; 44 | 45 | VersionChecker.GetLatestVersions(); 46 | 47 | VersionChecker.ResponseReceived.AddAnonymous("versionCheckManual", () => ShowResponseDialogue()); 48 | } 49 | 50 | 51 | /// 52 | /// Shows the response to a version check call as a dialogue box. 53 | /// 54 | /// Should the box appear if the version is upto date? 55 | public static void ShowResponseDialogue(bool showIfUptoDate = true) 56 | { 57 | VersionChecker.ResponseReceived.RemoveAnonymous("versionCheckManual"); 58 | 59 | if (VersionChecker.Versions.Data == null) 60 | { 61 | EditorUtility.DisplayDialog("Update Checker", 62 | $"Either you are offline or the system for version checking is broken or missing an entry.", 63 | "Continue"); 64 | 65 | return; 66 | } 67 | 68 | if (VersionChecker.IsNewerVersion) 69 | { 70 | if (!showIfUptoDate) return; 71 | EditorUtility.DisplayDialog("Update Checker", 72 | $"You are using a newer version than the currently released one.\n\nYours: {VersionInfo.ProjectVersionNumber}\nLatest: {VersionChecker.LatestVersionNumberString}", 73 | "Continue"); 74 | } 75 | else if (!VersionChecker.IsLatestVersion) 76 | { 77 | if (EditorUtility.DisplayDialog("Update Checker", 78 | $"You are using an older version of this package.\n\nCurrent: {VersionInfo.ProjectVersionNumber}\nLatest: {VersionChecker.LatestVersionNumberString}", 79 | "Latest Release", "Continue")) 80 | { 81 | Application.OpenURL(VersionChecker.DownloadURL); 82 | } 83 | } 84 | else 85 | { 86 | if (!showIfUptoDate) return; 87 | EditorUtility.DisplayDialog("Update Checker", 88 | "You are using the latest version!", 89 | "Continue"); 90 | } 91 | } 92 | } 93 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionEditorGUI.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0f2c15f561114f05a85f65527c4e1dac 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | namespace CarterGames.Experimental.MultiScene.Editor 25 | { 26 | /// 27 | /// The info used in the version validation system. 28 | /// 29 | public static class VersionInfo 30 | { 31 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 32 | | Fields 33 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 34 | 35 | /// 36 | /// The Url to request the versions from. 37 | /// 38 | public const string ValidationUrl = "https://carter.games/validation/versions.json"; 39 | 40 | 41 | /// 42 | /// The download Url for the latest version of this package. 43 | /// 44 | public const string DownloadBaseUrl = "https://github.com/CarterGames/MultiScene/releases/tag/"; 45 | 46 | 47 | /// 48 | /// The key of the package to get from the JSON blob. 49 | /// 50 | public const string Key = "Multi Scene"; 51 | 52 | 53 | /// 54 | /// The version string for the package. 55 | /// 56 | public static string ProjectVersionNumber => AssetVersionData.VersionNumber; 57 | } 58 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b27854de69e47ba8aa5f386703a6e6f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionNumber.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System; 25 | using UnityEngine; 26 | 27 | namespace CarterGames.Experimental.MultiScene.Editor 28 | { 29 | /// 30 | /// A data class to hold a x.x.x version number for comparisons. 31 | /// 32 | [Serializable] 33 | public sealed class VersionNumber 34 | { 35 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 36 | | Fields 37 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 38 | 39 | [SerializeField] private int major; 40 | [SerializeField] private int minor; 41 | [SerializeField] private int patch; 42 | 43 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 44 | | Properties 45 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 46 | 47 | /// 48 | /// The major version number. 49 | /// 50 | public int Major => major; 51 | 52 | 53 | /// 54 | /// The minor version number. 55 | /// 56 | public int Minor => minor; 57 | 58 | 59 | /// 60 | /// The patch version number. 61 | /// 62 | public int Patch => patch; 63 | 64 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 65 | | Constructors 66 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 67 | 68 | /// 69 | /// The blank constructor. 70 | /// 71 | public VersionNumber() { } 72 | 73 | 74 | /// 75 | /// Makes a new version number with the string entered. 76 | /// 77 | /// The string to convert. 78 | public VersionNumber(string value) 79 | { 80 | var split = value.Split('.'); 81 | 82 | if (split.Length != 3) return; 83 | 84 | major = int.Parse(split[0]); 85 | minor = int.Parse(split[1]); 86 | patch = int.Parse(split[2]); 87 | } 88 | } 89 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionNumber.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a083d6e9d044ab48462cfea555a8b2b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionPacket.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System; 25 | using System.Linq; 26 | using UnityEngine; 27 | 28 | namespace CarterGames.Experimental.MultiScene.Editor 29 | { 30 | /// 31 | /// A data class to hold the data downloaded from the server when requested. 32 | /// 33 | [Serializable] 34 | public sealed class VersionPacket 35 | { 36 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 37 | | Fields 38 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 39 | 40 | [SerializeField] private VersionData[] data; 41 | 42 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 43 | | Properties 44 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 45 | 46 | /// 47 | /// The data received for this package. 48 | /// 49 | public VersionData Data => data.FirstOrDefault(t => t.Key.Equals(VersionInfo.Key)); 50 | } 51 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Systems/Version Validation/VersionPacket.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 67ff64a0cd7f46d69c321f97deaf6354 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c1a08d1c789c4cf1b1dc731b75e77a3b 3 | timeCreated: 1716403945 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/AssetVersionData.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | namespace CarterGames.Experimental.MultiScene.Editor 25 | { 26 | /// 27 | /// Contains details for the asset. 28 | /// 29 | public static class AssetVersionData 30 | { 31 | /// 32 | /// The version number of the asset. 33 | /// 34 | public static string VersionNumber => "0.3.0"; 35 | 36 | 37 | /// 38 | /// The date this release of the asset was submitted for release. 39 | /// 40 | /// 41 | /// Asset owner is in the UK, so its D/M/Y format. 42 | /// 43 | public static string ReleaseDate => "24/05/2024"; 44 | } 45 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/AssetVersionData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d03dc77bf74b407ba879d5e5176285ce 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Editor Method Aid.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f0e99ef16e8c4aa29eb723c00c04b538 3 | timeCreated: 1716403952 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Editor Method Aid/InterfaceHelper.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System; 25 | using System.Linq; 26 | 27 | namespace CarterGames.Experimental.MultiScene.Editor 28 | { 29 | public static class InterfaceHelper 30 | { 31 | /// 32 | /// Gets all the interface implementations and returns the result (Editor Only) 33 | /// 34 | /// An Array of the interface type 35 | public static T[] GetAllInterfacesInstancesOfType() 36 | { 37 | var types = AppDomain.CurrentDomain.GetAssemblies() 38 | .SelectMany(x => x.GetTypes()) 39 | .Where(x => x.IsClass && typeof(T).IsAssignableFrom(x)); 40 | 41 | return types.Select(type => (T)Activator.CreateInstance(type)).ToArray(); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Editor Method Aid/InterfaceHelper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cc9b024f40894f91ad74dcbd5d2d1bbd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Editor Method Aid/SerializedPropertyHelper.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEditor; 25 | 26 | namespace CarterGames.Experimental.MultiScene.Editor 27 | { 28 | /// 29 | /// A helper class to aid with editor scripting where the API is really wordy... 30 | /// 31 | public static class SerializedPropertyHelper 32 | { 33 | /// 34 | /// Calls InsertArrayElementAtIndex() 35 | /// 36 | /// The property. 37 | /// The index. 38 | public static void InsertIndex(this SerializedProperty property, int index) 39 | { 40 | property.InsertArrayElementAtIndex(index); 41 | } 42 | 43 | 44 | /// 45 | /// Calls DeleteArrayElementAtIndex() 46 | /// 47 | /// The property. 48 | /// The index. 49 | public static void DeleteIndex(this SerializedProperty property, int index) 50 | { 51 | property.DeleteArrayElementAtIndex(index); 52 | } 53 | 54 | 55 | /// 56 | /// Calls GetArrayElementAtIndex() 57 | /// 58 | /// The property. 59 | /// The index. 60 | /// The property at the index entered. 61 | public static SerializedProperty GetIndex(this SerializedProperty property, int index) 62 | { 63 | return property.GetArrayElementAtIndex(index); 64 | } 65 | 66 | 67 | /// 68 | /// Calls FindProperty() 69 | /// 70 | /// The target object. 71 | /// The name of the property. 72 | /// The found property. 73 | public static SerializedProperty Fp(this SerializedObject serializedObject, string propName) 74 | { 75 | return serializedObject.FindProperty(propName); 76 | } 77 | 78 | 79 | /// 80 | /// Calls FindPropertyRelative() 81 | /// 82 | /// The target property. 83 | /// The name of the property. 84 | /// The found property. 85 | public static SerializedProperty Fpr(this SerializedProperty property, string propName) 86 | { 87 | return property.FindPropertyRelative(propName); 88 | } 89 | } 90 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Editor Method Aid/SerializedPropertyHelper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a702b1b98af4538bf0bbdab3e8f7aba 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Per User Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2eccf08c23d54825be34b3a8fc1d049c 3 | timeCreated: 1716404006 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Per User Settings/PerUserSettings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 557e869932c54b4ebbac4b5a1b035f3c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Per User Settings/SettingType.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | namespace CarterGames.Experimental.MultiScene.Editor 25 | { 26 | public enum SettingType 27 | { 28 | EditorPref, 29 | PlayerPref, 30 | SessionState, 31 | } 32 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Per User Settings/SettingType.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a63892fa4d674ed586adf599da76f7b8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Scriptable Assets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd1b1586ba524fd3a5d3d6e2fe395dd4 3 | timeCreated: 1716404274 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Scriptable Assets/FileEditorUtil.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4a23881518d540d598d5b0ca7773ca8b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Scriptable Assets/ScriptableObjectInitialize.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | namespace CarterGames.Experimental.MultiScene.Editor 25 | { 26 | /// 27 | /// Handles any logic for generating/updating the scriptable objects for the asset where needed. 28 | /// 29 | public class ScriptableObjectInitialize : IAssetEditorInitialize, IAssetEditorReload 30 | { 31 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 32 | | IAssetEditorInitialize 33 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 34 | 35 | /// 36 | /// Defines the order that this initializer run at. 37 | /// 38 | public int InitializeOrder => -1; 39 | 40 | 41 | /// 42 | /// Runs when the asset initialize flow is used. 43 | /// 44 | public void OnEditorInitialized() 45 | { 46 | if (ScriptableRef.HasAllAssets) return; 47 | ScriptableRef.TryCreateAssets(); 48 | } 49 | 50 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 51 | | IAssetEditorReload 52 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 53 | 54 | /// 55 | /// Runs when the asset reload flow is used. 56 | /// 57 | public void OnEditorReloaded() 58 | { 59 | if (ScriptableRef.HasAllAssets) return; 60 | ScriptableRef.TryCreateAssets(); 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Scriptable Assets/ScriptableObjectInitialize.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ace92c032fb443e89e547462e9a1323 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/Scriptable Assets/ScriptableRef.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d43c96a7c2c241629aeea034d1964b98 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Editor/Utility/UtilEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b4087d7505b54d41b45909bb7bfe2e27 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ecbb33183c7eedb40a545faca7678d98 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/CarterGames.MultiScene.Runtime.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CarterGames.MultiScene.Runtime", 3 | "rootNamespace": "CarterGames.Experimental.MultiScene", 4 | "references": [ 5 | "GUID:7577fcaa29c957d43a7833215b0209ed" 6 | ], 7 | "includePlatforms": [], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/CarterGames.MultiScene.Runtime.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dbcc0ddf7638b7144b4a852688291428 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b65c3a096d2c4e2aa03713ce5803d1b5 3 | timeCreated: 1716404713 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common/CarterGames.MultiScene.Common.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CarterGames.MultiScene.Common", 3 | "rootNamespace": "CarterGames.Common", 4 | "references": [], 5 | "includePlatforms": [], 6 | "excludePlatforms": [], 7 | "allowUnsafeCode": false, 8 | "overrideReferences": false, 9 | "precompiledReferences": [], 10 | "autoReferenced": true, 11 | "defineConstraints": [], 12 | "versionDefines": [], 13 | "noEngineReferences": false 14 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common/CarterGames.MultiScene.Common.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7577fcaa29c957d43a7833215b0209ed 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common/Evt.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fbd0e88aa29e4de7b697391353537aed 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common/Ref.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System.Collections.Generic; 25 | using UnityEngine; 26 | using UnityEngine.SceneManagement; 27 | 28 | namespace CarterGames.Common 29 | { 30 | /// 31 | /// A helper class for getting references to other scripts. 32 | /// 33 | public static class Ref 34 | { 35 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 36 | | Methods 37 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 38 | 39 | /// 40 | /// Gets the first of any and all of the type requested from the active scene. 41 | /// 42 | /// The type to get 43 | /// First instance of the type found in the active scene 44 | public static T GetComponentFromScene() 45 | { 46 | var allOfType = GetComponentsFromScene(); 47 | 48 | return allOfType.Count > 0 49 | ? allOfType[0] 50 | : default; 51 | } 52 | 53 | 54 | /// 55 | /// Gets the first of any and all of the type requested from all scenes... 56 | /// 57 | /// The type to get 58 | /// First instance of the type found in all scenes 59 | public static T GetComponentFromAllScenes() 60 | { 61 | var allOfType = GetComponentsFromAllScenes(); 62 | 63 | return allOfType.Count > 0 64 | ? allOfType[0] 65 | : default; 66 | } 67 | 68 | 69 | /// 70 | /// Gets any and all of the type requested from the active scene... 71 | /// 72 | /// The type to get 73 | /// List of any instances of the type found in the scene 74 | public static List GetComponentsFromScene() 75 | { 76 | var objs = new List(); 77 | var scene = SceneManager.GetActiveScene(); 78 | var validObjectsFromScene = new List(); 79 | 80 | scene.GetRootGameObjects(objs); 81 | 82 | foreach (var go in objs) 83 | { 84 | validObjectsFromScene.AddRange(go.GetComponentsInChildren(true)); 85 | } 86 | 87 | return validObjectsFromScene; 88 | } 89 | 90 | 91 | /// 92 | /// Gets any and all of the type requested from all scenes... 93 | /// 94 | /// The type to get 95 | /// List of any instances of the type found in all scenes 96 | public static List GetComponentsFromAllScenes() 97 | { 98 | var objs = new List(); 99 | var scenes = new List(); 100 | var validObjectsFromScene = new List(); 101 | 102 | for (var i = 0; i < SceneManager.sceneCount; i++) 103 | { 104 | scenes.Add(SceneManager.GetSceneAt(i)); 105 | } 106 | 107 | foreach (var scene in scenes) 108 | { 109 | objs.AddRange(scene.GetRootGameObjects()); 110 | } 111 | 112 | foreach (var go in objs) 113 | { 114 | validObjectsFromScene.AddRange(go.GetComponentsInChildren(true)); 115 | } 116 | 117 | return validObjectsFromScene; 118 | } 119 | } 120 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common/Ref.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: acd0caa45d2c48baa83ed19059cfda5a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common/Serialization.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7bda86e0a13483b8fa0560fbd00a869 3 | timeCreated: 1716404749 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common/Serialization/Dictionary.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8681b65c86ab4c769f7ce6590a56b354 3 | timeCreated: 1716404754 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common/Serialization/Dictionary/SerializableDIctionary.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System; 25 | using System.Collections.Generic; 26 | using UnityEngine; 27 | 28 | namespace CarterGames.Common 29 | { 30 | /// 31 | /// A custom dictionary class to store a serializable version of a dictionaries data. 32 | /// 33 | /// The key type. 34 | /// The value type. 35 | [Serializable] 36 | public class SerializableDictionary : Dictionary, ISerializationCallbackReceiver 37 | { 38 | /* ————————————————————————————————————————————————————————————————————————————————————————————————————————————— 39 | | Fields 40 | ————————————————————————————————————————————————————————————————————————————————————————————————————————————— */ 41 | 42 | [SerializeField] private List> list = new List>(); 43 | 44 | /* ————————————————————————————————————————————————————————————————————————————————————————————————————————————— 45 | | ISerializationCallbackReceiver Implementation 46 | ————————————————————————————————————————————————————————————————————————————————————————————————————————————— */ 47 | 48 | /// 49 | /// Runs before the class is serialized. 50 | /// 51 | public void OnBeforeSerialize() 52 | { 53 | if (list.Count > Count) 54 | { 55 | AddNewValue(); 56 | } 57 | else 58 | { 59 | UpdateSerializedValues(); 60 | } 61 | } 62 | 63 | 64 | /// 65 | /// Runs after the class is deserialized. 66 | /// 67 | public void OnAfterDeserialize() 68 | { 69 | Clear(); 70 | 71 | for (var i = 0; list != null && i < list.Count; i++) 72 | { 73 | var current = list[i]; 74 | 75 | #if UNITY_2021_1_OR_NEWER 76 | if (current.key != null) 77 | { 78 | TryAdd(current.key, current.value); 79 | } 80 | #elif UNITY_2020 81 | if (current.key != null) 82 | { 83 | if (ContainsKey(current.key)) continue; 84 | Add(current.key, current.value); 85 | } 86 | #endif 87 | } 88 | } 89 | 90 | /* ————————————————————————————————————————————————————————————————————————————————————————————————————————————— 91 | | Methods 92 | ————————————————————————————————————————————————————————————————————————————————————————————————————————————— */ 93 | 94 | /// 95 | /// Updates the list when called. 96 | /// 97 | private void UpdateSerializedValues() 98 | { 99 | list.Clear(); 100 | 101 | foreach(var pair in this) 102 | { 103 | list.Add(pair); 104 | } 105 | } 106 | 107 | 108 | /// 109 | /// Adds a new value when called 110 | /// 111 | private void AddNewValue() 112 | { 113 | #if UNITY_2021_1_OR_NEWER 114 | var current = list[^1]; 115 | 116 | if (current.key != null) 117 | { 118 | TryAdd(current.Key, current.value); 119 | } 120 | #elif UNITY_2020 121 | var current = list[list.Count - 1]; 122 | 123 | if (current.key != null) 124 | { 125 | if (ContainsKey(current.key)) return; 126 | Add(current.key, current.value); 127 | } 128 | #endif 129 | } 130 | } 131 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common/Serialization/Dictionary/SerializableDIctionary.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 81e9f4a7dfe040e89c9f9665cb4fdcb0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Common/Serialization/Dictionary/SerialzableKeyValuePair.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b38cd80fd4348668bc3054001149409 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Logger.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 07f9d4381e2c437b8a64b2e6e6fe9277 3 | timeCreated: 1661953956 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Logger/MultiSceneLogger.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEngine; 25 | 26 | namespace CarterGames.Experimental.MultiScene 27 | { 28 | /// 29 | /// A logging class for messages within the asset. 30 | /// 31 | public sealed class MultiSceneLogger 32 | { 33 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 34 | | Constants 35 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 36 | 37 | private const string LogPrefix = "Multi Scene | "; 38 | private const string WarningPrefix = "Warning | "; 39 | private const string ErrorPrefix = "Error | "; 40 | 41 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 42 | | Methods 43 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 44 | 45 | /// 46 | /// Displays a normal debug message for the build versions asset... 47 | /// 48 | /// The message to show... 49 | public static void Normal(string message) 50 | { 51 | Debug.Log($"{LogPrefix}{message}"); 52 | } 53 | 54 | 55 | /// 56 | /// Displays a warning debug message for the build versions asset... 57 | /// 58 | /// The message to show... 59 | public static void Warning(string message) 60 | { 61 | Debug.LogWarning($"{LogPrefix}{WarningPrefix}{message}"); 62 | } 63 | 64 | 65 | /// 66 | /// Displays a error debug message for the build versions asset... 67 | /// 68 | /// The message to show... 69 | public static void Error(string message) 70 | { 71 | Debug.LogError($"{LogPrefix}{ErrorPrefix}{message}"); 72 | } 73 | } 74 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Logger/MultiSceneLogger.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 96882ac5662843cdab50c967b3e03742 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/MultiSceneManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ae3b40c8a4863fa44aafba3318c00f82 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c105bbea9f543008ce334559c4b1727 3 | timeCreated: 1716408938 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ad179a2878424bb89c3f487af0ca7815 3 | timeCreated: 1660939713 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/AssetAccessor.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System.Collections.Generic; 25 | using System.Linq; 26 | using UnityEngine; 27 | 28 | namespace CarterGames.Experimental.MultiScene 29 | { 30 | /// 31 | /// Handles accessing the scriptable object data assets for this asset. 32 | /// 33 | public static class AssetAccessor 34 | { 35 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 36 | | Fields 37 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 38 | 39 | private const string IndexPath = "Asset Index"; 40 | 41 | // A cache of all the assets found... 42 | private static AssetIndex indexCache; 43 | 44 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 45 | | Properties 46 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 47 | 48 | /// 49 | /// Gets all the assets from the build versions asset... 50 | /// 51 | private static AssetIndex Index 52 | { 53 | get 54 | { 55 | if (indexCache != null) return indexCache; 56 | indexCache = (AssetIndex) Resources.Load(IndexPath, typeof(AssetIndex)); 57 | return indexCache; 58 | } 59 | } 60 | 61 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 62 | | Methods 63 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 64 | 65 | /// 66 | /// Gets the Save Manager Asset requested. 67 | /// 68 | /// The save manager asset to get. 69 | /// The asset if it exists. 70 | public static T GetAsset() where T : MultiSceneAsset 71 | { 72 | if (Index.Lookup.ContainsKey(typeof(T).ToString())) 73 | { 74 | return (T)Index.Lookup[typeof(T).ToString()][0]; 75 | } 76 | 77 | return null; 78 | } 79 | 80 | 81 | /// 82 | /// Gets the Save Manager Asset requested. 83 | /// 84 | /// The save manager asset to get. 85 | /// The asset if it exists. 86 | public static List GetAssets() where T : MultiSceneAsset 87 | { 88 | if (Index.Lookup.ContainsKey(typeof(T).ToString())) 89 | { 90 | return Index.Lookup[typeof(T).ToString()].Cast().ToList(); 91 | } 92 | 93 | return null; 94 | } 95 | } 96 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/AssetAccessor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4c4f6d7f64a348d49ae48072bb0b0ebb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Groups.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d4b4618b0706499ea7e56f4011a26eec 3 | timeCreated: 1716405082 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Groups/DefaultGroupCategory.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System; 25 | 26 | namespace CarterGames.Experimental.MultiScene 27 | { 28 | /// 29 | /// The data class for the default scene groups. 30 | /// 31 | [Serializable] 32 | public sealed class DefaultGroupCategory : GroupCategory 33 | { 34 | public DefaultGroupCategory(string groupName) : base(groupName) { } 35 | } 36 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Groups/DefaultGroupCategory.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62ac58a7f9a3428aa34999cad9a24e22 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Groups/GroupCategory.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System; 25 | 26 | namespace CarterGames.Experimental.MultiScene 27 | { 28 | /// 29 | /// The data class for the default scene groups. 30 | /// 31 | [Serializable] 32 | public class GroupCategory 33 | { 34 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 35 | | Fields 36 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 37 | 38 | /// 39 | /// The name of the group. 40 | /// 41 | public string groupName; 42 | 43 | /// 44 | /// The sorting index of the group. 45 | /// 46 | public int groupIndex; 47 | 48 | /// 49 | /// Should the group be shown. 50 | /// 51 | public bool showGroup; 52 | 53 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 54 | | Constructors 55 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 56 | 57 | /// 58 | /// Creates a group category will the name entered. 59 | /// 60 | /// The name of the group. 61 | public GroupCategory(string groupName) 62 | { 63 | this.groupName = groupName; 64 | groupIndex = 0; 65 | showGroup = true; 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Groups/GroupCategory.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6965b47b628a4e768b202dd068776840 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Index.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2cc586ab83746ffaecaa7ed813c9f94 3 | timeCreated: 1716404675 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Index/AssetIndex.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System.Collections.Generic; 25 | using CarterGames.Common; 26 | using UnityEngine; 27 | 28 | namespace CarterGames.Experimental.MultiScene 29 | { 30 | /// 31 | /// Handles a data store of all the scriptable objects for the asset that are used at runtime. 32 | /// 33 | [CreateAssetMenu(fileName = "Asset Index", menuName = "Carter Games/Multi Scene/Asset Index Asset", order = 1)] 34 | public sealed class AssetIndex : MultiSceneAsset 35 | { 36 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 37 | | Fields 38 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 39 | 40 | [SerializeField] private SerializableDictionary> assets; 41 | 42 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 43 | | Properties 44 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 45 | 46 | /// 47 | /// A lookup of all the assets in the project that can be used at runtime. 48 | /// 49 | public SerializableDictionary> Lookup => assets; 50 | } 51 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Index/AssetIndex.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99358c782b2543f68771d5a76a62ebbf 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: 65a64cdde33454b4dae05f56cefd732a, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/MultiSceneAsset.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEngine; 25 | 26 | namespace CarterGames.Experimental.MultiScene 27 | { 28 | /// 29 | /// Used to define a scriptable object in the asset. 30 | /// 31 | public class MultiSceneAsset : ScriptableObject { } 32 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/MultiSceneAsset.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a9ec121f295f48de88f2813341b7f31d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/MultiSceneMono.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEngine; 25 | 26 | namespace CarterGames.Experimental.MultiScene 27 | { 28 | /// 29 | /// Used to access a MonoBehaviour for classes that don't derive from it. 30 | /// 31 | public sealed class MultiSceneMono : MonoBehaviour { } 32 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/MultiSceneMono.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b1d8170e6e7a4d6785b133f9ab71d3a6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2ca9a6a277f437bb33fe034abe8d5d4 3 | timeCreated: 1716405010 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Settings/AssetGlobalRuntimeSettings.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using UnityEngine; 4 | 5 | namespace CarterGames.Experimental.MultiScene 6 | { 7 | public class AssetGlobalRuntimeSettings : MultiSceneAsset 8 | { 9 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 10 | | Fields 11 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 12 | 13 | [SerializeField] private SceneGroupEditorLoadMode sceneGroupLoadMode; 14 | [SerializeField] private SceneGroup startGroup; 15 | [SerializeField] private SceneGroup lastGroupLoaded; 16 | 17 | [SerializeField] private int listenerFrequency = 5; 18 | [SerializeField] private bool useUnloadResources; 19 | [SerializeField] private bool showLogs = true; 20 | 21 | 22 | [SerializeField] private List userGroupCategories = new List(); 23 | 24 | [SerializeField] private List defaultCategories = new List() 25 | { 26 | new DefaultGroupCategory(string.Empty), 27 | new DefaultGroupCategory("Menu"), 28 | new DefaultGroupCategory("Game"), 29 | new DefaultGroupCategory("Levels"), 30 | new DefaultGroupCategory("Player"), 31 | new DefaultGroupCategory("Enemies"), 32 | new DefaultGroupCategory("World"), 33 | new DefaultGroupCategory("UI"), 34 | }; 35 | 36 | 37 | [SerializeField, HideInInspector] private bool showSceneGroupOptions; 38 | [SerializeField, HideInInspector] private bool showGeneralOptions; 39 | [SerializeField, HideInInspector] private bool showGroupCategoryOptions; 40 | [SerializeField, HideInInspector] private bool showDefaultGroupsInSetAsset; 41 | [SerializeField, HideInInspector] private bool showUserGroupsInSetAsset; 42 | 43 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 44 | | Properties 45 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 46 | 47 | /// 48 | /// The scene group to load first. 49 | /// 50 | public SceneGroup StartGroup => startGroup; 51 | 52 | /// 53 | /// How many of the listeners of IMultiSceneAwake/Enable/Start invoke per frame. 54 | /// 55 | public int ListenerFrequency => listenerFrequency; 56 | 57 | /// 58 | /// Defines if the Resources.UnloadUnusedAssets is used when changing scene groups. 59 | /// 60 | public bool UseUnloadResources => useUnloadResources; 61 | 62 | /// 63 | /// All the scene group categories defined in the settings. 64 | /// 65 | public List AllGroupCategories => defaultCategories.Concat(userGroupCategories).ToList(); 66 | 67 | /// 68 | /// Should the asset should log messages? 69 | /// 70 | public bool UseLogs => showLogs; 71 | 72 | /// 73 | /// The load mode to use when loading scene groups. 74 | /// 75 | public SceneGroupEditorLoadMode LoadMode => sceneGroupLoadMode; 76 | 77 | /// 78 | /// The last scene group loaded if saved. 79 | /// 80 | public SceneGroup LastGroup 81 | { 82 | get => lastGroupLoaded; 83 | set => lastGroupLoaded = value; 84 | } 85 | } 86 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Assets/Settings/AssetGlobalRuntimeSettings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 91ae6d02d8154bf38967a27e1945348a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: aa08e3ea1b2fe054487e19b0e6cd65ae, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Attributes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 885e32696358f8e43a431a5c5fe0a749 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Attributes/Ordered Attribute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ec5bd0db5b5743dea76091354fd9d13f 3 | timeCreated: 1716448631 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Attributes/Ordered Attribute/MultiSceneOrderedAttribute.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System; 25 | 26 | namespace CarterGames.Experimental.MultiScene 27 | { 28 | /// 29 | /// Attribute | When applied to an Multi Scene interface, the method will be called in the execution order defined. 30 | /// 31 | /// 32 | /// The order attribute only works if the method it is on is a Multi Scene Interface Implementation, other methods will be ignored by the system at present. 33 | /// If the interface implementation has no order it will be set to 0 as it is the default, just like in the scripting execution order system in Unity. 34 | /// 35 | [AttributeUsage(AttributeTargets.Method)] 36 | public sealed class MultiSceneOrderedAttribute : Attribute 37 | { 38 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 39 | | Fields 40 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 41 | 42 | public int order; 43 | 44 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 45 | | Constructors 46 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 47 | 48 | /// 49 | /// A default ordered attribute. 50 | /// 51 | public MultiSceneOrderedAttribute() 52 | { 53 | order = 0; 54 | } 55 | 56 | 57 | /// 58 | /// A attribute with a defined order. 59 | /// 60 | public MultiSceneOrderedAttribute(int order = 0) 61 | { 62 | this.order = order; 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Attributes/Ordered Attribute/MultiSceneOrderedAttribute.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 084aee3f0f78438886f06680e83ad405 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Attributes/Ordered Attribute/OrderedHandler.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System.Collections.Generic; 25 | using System.Linq; 26 | using System.Reflection; 27 | 28 | namespace CarterGames.Experimental.MultiScene 29 | { 30 | /// 31 | /// A class to handle sorting ordered listeners. 32 | /// 33 | public static class OrderedHandler 34 | { 35 | /// 36 | /// Gets the listeners in the order they are defined via the attributes. 37 | /// 38 | /// The listeners to process 39 | /// The method name to look out for 40 | /// The type to get 41 | /// A list of ordered listeners based on their defined orders. 42 | /// 43 | /// The order attribute only works if the method it is on is a Multi Scene Interface Implementation, other methods will be ignored by the system at present. 44 | /// If the interface implementation has no order it will be set to 0 as it is the default, just like in the scripting execution order system in Unity. 45 | /// 46 | public static List> OrderListeners(List listeners, string methodName) 47 | { 48 | var _data = new List>(); 49 | 50 | foreach (var _listener in listeners) 51 | { 52 | var _method = _listener.GetType().GetMethod(methodName); 53 | if (_method == null) continue; 54 | var _hasOrder = _method.GetCustomAttributes(typeof(MultiSceneOrderedAttribute), true).Length > 0; 55 | 56 | if (!_hasOrder) 57 | { 58 | _data.Add(new OrderedListenerData(0, _listener)); 59 | continue; 60 | } 61 | 62 | _data.Add(new OrderedListenerData(_method.GetCustomAttribute().order, _listener)); 63 | } 64 | 65 | return _data.OrderBy(t => t.Order).ToList(); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Attributes/Ordered Attribute/OrderedHandler.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7de4874c04ff4397aa3fe27bb145ef19 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Attributes/Ordered Attribute/OrderedListenerData.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System; 25 | using UnityEngine; 26 | 27 | namespace CarterGames.Experimental.MultiScene 28 | { 29 | /// 30 | /// A data class for holding ordered listeners for the multi scene manager to use 31 | /// 32 | /// The interface type to use 33 | [Serializable] 34 | public sealed class OrderedListenerData 35 | { 36 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 37 | | Fields 38 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 39 | 40 | [SerializeField] private int order; 41 | [SerializeField] private T listener; 42 | 43 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 44 | | Properties 45 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 46 | 47 | /// 48 | /// The order to use for this listener 49 | /// 50 | public int Order => order; 51 | 52 | /// 53 | /// The listener for to use 54 | /// 55 | public T Listener => listener; 56 | 57 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 58 | | Constructors 59 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 60 | 61 | /// 62 | /// Constructor | Implements the order & listener automatically 63 | /// 64 | /// The order to set 65 | /// The listener to set 66 | public OrderedListenerData(int order, T listener) 67 | { 68 | this.listener = listener; 69 | this.order = order; 70 | } 71 | } 72 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Attributes/Ordered Attribute/OrderedListenerData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d26799314f84541b0d8705d8cea56b3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Built-In Extensions.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99db7a127b6b33047a63f20e1ea9c3c2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Built-In Extensions/Do Not Destroy.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 059dbf4d89dfa9549b30d6c6b2699501 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Built-In Extensions/Do Not Destroy/DoNotDestroyAccessor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5389e06e78163be4b8b5a940aae16d2c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Listeners.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 971c048408df0844bbabebd9300f26f9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Listeners/IMultiSceneAwake.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | namespace CarterGames.Experimental.MultiScene 25 | { 26 | /// 27 | /// An interface for syncing logic to when scene groups are loaded. 28 | /// 29 | /// Awake is run first out of the interfaces. 30 | public interface IMultiSceneAwake 31 | { 32 | void OnMultiSceneAwake(); 33 | } 34 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Listeners/IMultiSceneAwake.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e577c62cac314f4eb1d9b0bca8c0383 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Listeners/IMultiSceneEnable.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | namespace CarterGames.Experimental.MultiScene 25 | { 26 | /// 27 | /// An interface for syncing logic to when scene groups are loaded. 28 | /// 29 | /// Enable is run second out of the interfaces. 30 | public interface IMultiSceneEnable 31 | { 32 | void OnMultiSceneEnable(); 33 | } 34 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Listeners/IMultiSceneEnable.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3bd2e7350ca753f49a17d6652795e4b7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Listeners/IMultiSceneStart.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | namespace CarterGames.Experimental.MultiScene 25 | { 26 | /// 27 | /// An interface for syncing logic to when scene groups are loaded. 28 | /// 29 | /// Start is run last out of the interfaces. 30 | public interface IMultiSceneStart 31 | { 32 | void OnMultiSceneStart(); 33 | } 34 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Listeners/IMultiSceneStart.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4a0d9be5a5b1e37428548531f082f4bc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Listeners/ListenerHandler.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8af640d803c7479eb287744a76642073 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Popup Dialogues.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c21fe2ec403a4ca1a5655e794aacaa2d 3 | timeCreated: 1662133183 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Popup Dialogues/MultiScenePopups.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | #if UNITY_EDITOR 25 | 26 | using CarterGames.Common; 27 | using UnityEditor; 28 | 29 | namespace CarterGames.Experimental.MultiScene.Editor 30 | { 31 | /// 32 | /// Container class that holds all the popups editor dialogues that the system uses to prompt the user some info... 33 | /// 34 | public static class MultiScenePopups 35 | { 36 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 37 | | Events 38 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 39 | 40 | /// 41 | /// Broadcasts the result of a editor dialogue popups for use... 42 | /// 43 | public static readonly Evt OnPopupResolved = new Evt(); 44 | 45 | 46 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 47 | | Dialogue Popups 48 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 49 | 50 | /// 51 | /// Displays a dialogue popup for the user trying to use an invalid scene group setup... 52 | /// 53 | public static void ShowInvalidSceneGroup() 54 | { 55 | OnPopupResolved.Raise("InvalidSceneGroup", EditorUtility.DisplayDialog("Invalid Scene Group Detected!", 56 | "The scene group you are trying to load is invalid! Please ensure you have setup the group correctly in the editor.", "Close")); 57 | } 58 | } 59 | } 60 | 61 | #endif -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Popup Dialogues/MultiScenePopups.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bcfbe21d808f43958e86366a3b46939b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Referencing.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9f23e08a3c430b549adf25633c0a06d6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Referencing/MultiSceneRef.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 342bef808ecdf3c47b7976409694997f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Scene Groups.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00912aa1534f4e44b700ca4c6d119e5c 3 | timeCreated: 1661952718 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Scene Groups/SceneData.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using System; 25 | 26 | namespace CarterGames.Experimental.MultiScene 27 | { 28 | /// 29 | /// Controls the data required for each scene in a scene group... 30 | /// 31 | [Serializable] 32 | public struct SceneData 33 | { 34 | /// 35 | /// The name of the scene without any extensions such as (.unity)... 36 | /// 37 | public string sceneName; 38 | 39 | 40 | /// 41 | /// The path in the project for the scene... 42 | /// 43 | public string scenePath; 44 | 45 | 46 | /// 47 | /// Defines if the scene is in the build settings of the project... 48 | /// 49 | public bool isInBuildSettings; 50 | } 51 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Scene Groups/SceneData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0662a2c9a6b7418eb01eb1592546ff47 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Scene Groups/SceneGroup.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0fa88d5d3c5d4f14b8d0f729d37d1ff3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Scene Groups/SceneGroupEditorLoadMode.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEngine; 25 | 26 | namespace CarterGames.Experimental.MultiScene 27 | { 28 | /// 29 | /// The load-modes for the editor to load a scene group when entering playmode. 30 | /// 31 | public enum SceneGroupEditorLoadMode 32 | { 33 | [InspectorName("No Auto Load")] None = 0, 34 | [InspectorName("Default (Assigned)")] Default = 1, 35 | [InspectorName("LastLoaded (In Editor)")] LastLoaded = 2, 36 | } 37 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Scene Groups/SceneGroupEditorLoadMode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 18f71d9a090a4838839530819cc8af79 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Scene Loader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 22e11cb7741a59b44b3931ad0d8d6e3a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Scene Loader/BaseMultiSceneLoader.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Carter Games 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in 12 | * all copies or substantial portions of the Software. 13 | * 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | */ 23 | 24 | using UnityEngine; 25 | 26 | namespace CarterGames.Experimental.MultiScene 27 | { 28 | /// 29 | /// Provides a base set of logic for loading a scene group to inherit from and override as needed. 30 | /// 31 | /// 32 | /// Not abstract as it can be used as is for basic implementations. 33 | /// 34 | public class BaseMultiSceneLoader : MonoBehaviour 35 | { 36 | /// 37 | /// The scene group to load... 38 | /// 39 | [SerializeField] protected SceneGroup loadGroup; 40 | 41 | 42 | /// 43 | /// Gets whether or not the scene group is loading or not... 44 | /// 45 | protected bool IsLoading { get; set; } 46 | 47 | 48 | /// 49 | /// Loads a scene group... 50 | /// 51 | public virtual void LoadSceneGroup() 52 | { 53 | if (IsLoading) return; 54 | MultiSceneManager.LoadScenes(loadGroup); 55 | IsLoading = true; 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Systems/Scene Loader/BaseMultiSceneLoader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e4dd75d42a3c7b448a15e3ae2d119090 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Utility.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 289beba834b540e0ab37344d34660201 3 | timeCreated: 1716408942 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Utility/Per User Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed6444b5bb314282ae7b1f7f0bdedbf7 3 | timeCreated: 1716408948 -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Utility/Per User Settings/PerUserSettingsRuntime.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace CarterGames.Experimental.MultiScene 5 | { 6 | /// 7 | /// Handles the per user settings that are for runtime use. 8 | /// 9 | public static class PerUserSettingsRuntime 10 | { 11 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 12 | | Fields 13 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 14 | 15 | private static readonly string DebugLogId = "CarterGames_MultiScene_Settings_ShowDebugLogs"; 16 | 17 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 18 | | Properties 19 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 20 | 21 | /// 22 | /// Should the asset show the debug logs. 23 | /// 24 | public static bool ShowDebugLogs 25 | { 26 | get => (bool) GetOrCreateValue(DebugLogId, true); 27 | set => SetValue(DebugLogId, value); 28 | } 29 | 30 | /* ───────────────────────────────────────────────────────────────────────────────────────────────────────────── 31 | | Methods 32 | ───────────────────────────────────────────────────────────────────────────────────────────────────────────── */ 33 | 34 | private static object GetOrCreateValue(string key, object defaultValue = null) 35 | { 36 | if (PlayerPrefs.HasKey(key)) 37 | { 38 | switch (typeof(T)) 39 | { 40 | case var x when x == typeof(bool): 41 | return PlayerPrefs.GetInt(key) == 1; 42 | case var x when x == typeof(int): 43 | return PlayerPrefs.GetInt(key); 44 | case var x when x == typeof(float): 45 | return PlayerPrefs.GetFloat(key); 46 | case var x when x == typeof(string): 47 | return PlayerPrefs.GetString(key); 48 | case var x when x == typeof(Vector2): 49 | return JsonUtility.FromJson(PlayerPrefs.GetString(key)); 50 | default: 51 | return null; 52 | } 53 | } 54 | 55 | switch (typeof(T)) 56 | { 57 | case var x when x == typeof(bool): 58 | PlayerPrefs.SetInt(key, defaultValue == null ? 0 : defaultValue.ToString().ToLower() == "true" ? 1 : 0); 59 | return PlayerPrefs.GetInt(key) == 1; 60 | case var x when x == typeof(int): 61 | PlayerPrefs.SetInt(key, defaultValue == null ? 0 : (int) defaultValue); 62 | return PlayerPrefs.GetInt(key); 63 | case var x when x == typeof(float): 64 | PlayerPrefs.SetFloat(key, defaultValue == null ? 0 : (float) defaultValue); 65 | return PlayerPrefs.GetFloat(key); 66 | case var x when x == typeof(string): 67 | PlayerPrefs.SetString(key, (string) defaultValue); 68 | return PlayerPrefs.GetString(key); 69 | case var x when x == typeof(Vector2): 70 | PlayerPrefs.SetString(key, defaultValue == null ? JsonUtility.ToJson(Vector2.zero) : JsonUtility.ToJson(defaultValue)); 71 | return JsonUtility.FromJson(PlayerPrefs.GetString(key)); 72 | default: 73 | return null; 74 | } 75 | } 76 | 77 | 78 | private static void SetValue(string key, object value) 79 | { 80 | switch (typeof(T)) 81 | { 82 | case var x when x == typeof(bool): 83 | PlayerPrefs.SetInt(key, ((bool)value) ? 1 : 0); 84 | break; 85 | case var x when x == typeof(int): 86 | PlayerPrefs.SetInt(key, (int)value); 87 | break; 88 | case var x when x == typeof(float): 89 | PlayerPrefs.SetFloat(key, (float)value); 90 | break; 91 | case var x when x == typeof(string): 92 | PlayerPrefs.SetString(key, (string)value); 93 | break; 94 | case var x when x == typeof(Vector2): 95 | PlayerPrefs.SetString(key, JsonUtility.ToJson(value)); 96 | break; 97 | default: 98 | break; 99 | } 100 | 101 | PlayerPrefs.Save(); 102 | } 103 | 104 | 105 | public static void ResetPrefs() 106 | { 107 | ShowDebugLogs = true; 108 | } 109 | } 110 | } -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Code/Runtime/Utility/Per User Settings/PerUserSettingsRuntime.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f2071bfe3cf64bf388a0c943a44bc81b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: f82d46e5e26774d4baf6eb999379a0dd, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Extensions.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5574bdf1c430456448f43c33fe05d431 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Extensions/Packages.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2245c0f40b89a234eb365073ab6683c1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Extensions/Packages/Multi Scene URP Extension 0.3.0.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CarterGames/MultiScene/900a01f4eaa85619208060a576a7246a03c1c60a/Carter Games/Multi Scene/Extensions/Packages/Multi Scene URP Extension 0.3.0.unitypackage -------------------------------------------------------------------------------- /Carter Games/Multi Scene/Extensions/Packages/Multi Scene URP Extension 0.3.0.unitypackage.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e13a53bb9cc23404786664da48a58c42 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/~Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e931d12ccbd3e544989ac3f1ecb8cff9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Carter Games/Multi Scene/~Documentation/Multi Scene Documentation (Offline).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CarterGames/MultiScene/900a01f4eaa85619208060a576a7246a03c1c60a/Carter Games/Multi Scene/~Documentation/Multi Scene Documentation (Offline).pdf -------------------------------------------------------------------------------- /Carter Games/Multi Scene/~Documentation/Multi Scene Documentation (Offline).pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0a1580cbdb00e354cb3990565a68dda6 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Jonathan Carter 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 🟪🟪🟪 This asset is depreciated. It can still be downloaded and used, however, I'm no longer providing updates for this asset. 🟪🟪🟪 2 | 3 | ![Banner Full 1200-630x](https://github.com/CarterGames/MultiScene/assets/33253710/5ac7b9c7-2e51-41b0-8f1c-4f7058cdc6f1) 4 | 5 | A library to help developers create Unity games that split elements of the game into multiple scenes. 6 | 7 | ## Badges 8 | ![CodeFactor](https://www.codefactor.io/repository/github/cartergames/multiscene/badge?style=for-the-badge) 9 | ![GitHub all releases](https://img.shields.io/github/downloads/CarterGames/MultiScene/total?style=for-the-badge) 10 | ![GitHub release (latest by date)](https://img.shields.io/github/v/release/CarterGames/MultiScene?style=for-the-badge) 11 | ![GitHub repo size](https://img.shields.io/github/repo-size/CarterGames/MultiScene?style=for-the-badge) 12 | ![Unity](https://img.shields.io/badge/Unity-2020.3.x_or_higher-critical?style=for-the-badge) 13 | 14 | ## Note 15 | This package is considered experimental, updates will be fairly infrequent if at all. 16 | 17 | ## Key Features 18 | ✔️ Cross scene referencing
19 | ✔️ Multi scene management
20 | ✔️ Extensions with extra functionality such as URP camera stacking.
21 | 22 | ## To-Do 23 | - Further editor tools 24 | - Optimisation extension for better scene loading 25 | - More scene loading options 26 | - Additional attributes for more flexibility 27 | 28 | ## How To Install 29 | Download the latest version of the project via the packages section of this repo & un-zip the downloaded files. Then either: 30 | 1. Run the .unitypackage and proceed to follow the steps in import window in Unity 31 | 2. Open your Unity project, right-click in the project window and select the "Import Custom Package" option. Select the package and follow the steps in import window 32 | 33 | ## Getting Started 34 | - See docs for usage. 35 | 36 | ## Documentation 37 | You can access a online of the documentation here: Online Documentation. An offline copy if provided with the package and asset if needed. 38 | 39 | ## Unity Supported Versions 40 | The asset is developed and maintained in 2020.3.x and make use for available .Net updates in the version. Older versions of Unity are not supported for this asset. 41 | 42 | ## Authors 43 | - Jonathan Carter 44 | 45 | ## Licence 46 | MIT Licence 47 | --------------------------------------------------------------------------------