├── .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 | 
4 |
5 | A library to help developers create Unity games that split elements of the game into multiple scenes.
6 |
7 | ## Badges
8 | 
9 | 
10 | 
11 | 
12 | 
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 |
--------------------------------------------------------------------------------