diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e434814..e3c021c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: echo "InstallerProjectPath=./Installer" >> $GITHUB_OUTPUT echo "InstallerFileName=ImageLoader-Installer" >> $GITHUB_OUTPUT echo "InstallerExportMethod=com.IvanMurzak.Unity.ImageLoader.Installer.PackageExporter.ExportPackage" >> $GITHUB_OUTPUT - echo "InstallerUnityVersion=2019.4.40f1" >> $GITHUB_OUTPUT + echo "InstallerUnityVersion=2021.3.45f1" >> $GITHUB_OUTPUT check-version-tag: needs: setup diff --git a/.github/workflows/test_pull_request.yml b/.github/workflows/test_pull_request.yml index c6c1ffe..6ab201e 100644 --- a/.github/workflows/test_pull_request.yml +++ b/.github/workflows/test_pull_request.yml @@ -23,7 +23,7 @@ jobs: echo "InstallerProjectPath=./Installer" >> $GITHUB_OUTPUT echo "InstallerFileName=Unity-ImageLoader-Installer" >> $GITHUB_OUTPUT echo "InstallerExportMethod=com.IvanMurzak.Unity.ImageLoader.Installer.PackageExporter.ExportPackage" >> $GITHUB_OUTPUT - echo "InstallerUnityVersion=2019.4.40f1" >> $GITHUB_OUTPUT + echo "InstallerUnityVersion=2021.3.45f1" >> $GITHUB_OUTPUT # --- EDIT MODE --- diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..bd9c329 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,57 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Repository shape: two Unity projects + one shippable package + +This repo is not a single Unity project. It contains **two independent Unity projects** plus the library source that one of them ships: + +- **`Unity-Package/`** — the Unity project used to develop and test the actual **Image Loader** library. The distributable package is the subfolder `Unity-Package/Assets/root/` (its own `package.json`, published to OpenUPM as `extensions.unity.imageloader`). Everything else under `Unity-Package/` (ProjectSettings, Library, .sln/.csproj) is Unity scaffolding, not shipped. **All library tests run against this project** (`projectPath: ./Unity-Package`). See `Unity-Package/CLAUDE.md` for the library's internal architecture. +- **`Installer/`** — a *separate* Unity project whose only job is to export a `.unitypackage` ("ImageLoader-Installer") that adds the OpenUPM scoped registry to a consumer's `manifest.json`. Entry point `Installer/Assets/com.IvanMurzak/Image Loader Installer/Installer.cs` runs at editor load (`[InitializeOnLoad]`) and injects the registry; `PackageExporter.ExportPackage` builds the `.unitypackage`. It carries its own `Version` constant that must match the package version. +- **`docs/`**, **`README.md`**, **`bump-version.ps1`**, **`.github/`** — repo-level assets shared by both projects. + +When editing library code you almost always work in `Unity-Package/Assets/root/`; the `Installer/` project is only touched for install/registry logic. + +## Versioning (must stay in sync across two files) + +The package version lives in **two** places that are kept identical: + +- `Unity-Package/Assets/root/package.json` → `"version"` +- `Installer/Assets/com.IvanMurzak/Image Loader Installer/Installer.cs` → `public const string Version` + +Never edit these by hand independently. Use the script, which updates both atomically: + +```powershell +./bump-version.ps1 -NewVersion "7.1.0" # apply +./bump-version.ps1 -NewVersion "7.1.0" -WhatIf # preview without writing +``` + +## Testing + +Tests are Unity Test Framework (NUnit) tests inside `Unity-Package/`, split across three assemblies: + +- `Tests/Base/` (`Extensions.Unity.ImageLoader.Tests`) — shared utilities, no tests +- `Tests/Editor/` (`…Tests.Editor`) — EditMode +- `Tests/Runtime/` (`…Tests.Runtime`) — PlayMode + +**Run locally:** open the `Unity-Package` project → Window → General → Test Runner → *EditMode* / *PlayMode* tab. Run a single test by selecting it in that tree (there is no CLI-single-test shortcut short of Unity batch mode `-runTests -testFilter`). + +### Test network is faked, not real +The library issues web requests through the injectable `IWebRequestProvider` (`ImageLoader.settings.webRequestProvider`, default `DefaultWebRequestProvider`). Tests swap in `MockWebRequestProvider`, which routes every URL to an **in-process localhost HTTP server** (`TestHttpServer`) instead of the public internet — this is what makes image-loading tests deterministic. Wiring lives in `Tests/Base/Utils/TestUtils.cs`: + +- `TestUtils.BeginHold(url)` / `ReleaseHeld(url)` — park a request in-flight on the server so "cancel-while-loading" states are reproducible. Always pair them. +- Registered URLs resolve to a fast local image; unregistered URLs hit the server's slow route so client-side timeouts fire predictably. + +If you add a test that loads an image, register/route it through `TestUtils` — do not point it at a real remote URL. + +### Headless-CI caveat +Finalizer/GC-driven reference-cleanup tests are non-deterministic under Unity's conservative collector in `-batchmode`. `TestUtils` skips them when `Application.isBatchMode` is true (they still run in the interactive Editor Test Runner). Don't "fix" such a test by forcing it to run headless — verify it in the Editor. + +## CI + +Reusable workflow `.github/workflows/test_unity_plugin.yml` runs the Unity Test Runner for one `(unityVersion, testMode)` across a platform matrix (`base`, `windows-mono`) on ubuntu Docker images. + +- **`test_pull_request.yml`** fans that out over Unity 2019.4 → 6000.0 in both `editmode` and `playmode`. +- **`release.yml`** (on tag) runs the full matrix, then signs & packs the UPM tarball (`upm pack` from `Unity-Package/Assets/root`) and exports the Installer `.unitypackage` (Installer project pinned to Unity 2021.3.45f1). + +PRs from forks run with `pull_request_target` and require the **`ci-ok`** label; the workflow aborts if a PR also edits files under `.github/workflows/` (secrets safety). diff --git a/Installer/.vscode/extensions.json b/Installer/.vscode/extensions.json new file mode 100644 index 0000000..ddb6ff8 --- /dev/null +++ b/Installer/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "visualstudiotoolsforunity.vstuc" + ] +} diff --git a/Installer/.vscode/launch.json b/Installer/.vscode/launch.json new file mode 100644 index 0000000..da60e25 --- /dev/null +++ b/Installer/.vscode/launch.json @@ -0,0 +1,10 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to Unity", + "type": "vstuc", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/Installer/.vscode/settings.json b/Installer/.vscode/settings.json index e232cd6..cb81b36 100644 --- a/Installer/.vscode/settings.json +++ b/Installer/.vscode/settings.json @@ -1,55 +1,55 @@ -{ - "files.exclude": - { - "**/.DS_Store":true, - "**/.git":true, - "**/.gitmodules":true, - "**/*.booproj":true, - "**/*.pidb":true, - "**/*.suo":true, - "**/*.user":true, - "**/*.userprefs":true, - "**/*.unityproj":true, - "**/*.dll":true, - "**/*.exe":true, - "**/*.pdf":true, - "**/*.mid":true, - "**/*.midi":true, - "**/*.wav":true, - "**/*.gif":true, - "**/*.ico":true, - "**/*.jpg":true, - "**/*.jpeg":true, - "**/*.png":true, - "**/*.psd":true, - "**/*.tga":true, - "**/*.tif":true, - "**/*.tiff":true, - "**/*.3ds":true, - "**/*.3DS":true, - "**/*.fbx":true, - "**/*.FBX":true, - "**/*.lxo":true, - "**/*.LXO":true, - "**/*.ma":true, - "**/*.MA":true, - "**/*.obj":true, - "**/*.OBJ":true, - "**/*.asset":true, - "**/*.cubemap":true, - "**/*.flare":true, - "**/*.mat":true, - "**/*.meta":true, - "**/*.prefab":true, - "**/*.unity":true, - "build/":true, - "Build/":true, - "Library/":true, - "library/":true, - "obj/":true, - "Obj/":true, - "ProjectSettings/":true, - "temp/":true, - "Temp/":true - } +{ + "files.exclude": { + "**/.DS_Store": true, + "**/.git": true, + "**/.gitmodules": true, + "**/*.booproj": true, + "**/*.pidb": true, + "**/*.suo": true, + "**/*.user": true, + "**/*.userprefs": true, + "**/*.unityproj": true, + "**/*.dll": true, + "**/*.exe": true, + "**/*.pdf": true, + "**/*.mid": true, + "**/*.midi": true, + "**/*.wav": true, + "**/*.gif": true, + "**/*.ico": true, + "**/*.jpg": true, + "**/*.jpeg": true, + "**/*.png": true, + "**/*.psd": true, + "**/*.tga": true, + "**/*.tif": true, + "**/*.tiff": true, + "**/*.3ds": true, + "**/*.3DS": true, + "**/*.fbx": true, + "**/*.FBX": true, + "**/*.lxo": true, + "**/*.LXO": true, + "**/*.ma": true, + "**/*.MA": true, + "**/*.obj": true, + "**/*.OBJ": true, + "**/*.asset": true, + "**/*.cubemap": true, + "**/*.flare": true, + "**/*.mat": true, + "**/*.meta": true, + "**/*.prefab": true, + "**/*.unity": true, + "build/": true, + "Build/": true, + "Library/": true, + "library/": true, + "obj/": true, + "Obj/": true, + "ProjectSettings/": true, + "temp/": true, + "Temp/": true + }, + "dotnet.defaultSolution": "Installer.sln" } \ No newline at end of file diff --git a/Installer/Packages/manifest.json b/Installer/Packages/manifest.json index 94941c0..10cc9fe 100644 --- a/Installer/Packages/manifest.json +++ b/Installer/Packages/manifest.json @@ -1,5 +1,6 @@ { "dependencies": { + "com.unity.asset-store-tools": "https://github.com/Unity-Technologies/com.unity.asset-store-tools.git?path=/com.unity.asset-store-tools", "com.unity.test-framework": "1.1.33" }, "scopedRegistries": [ @@ -16,4 +17,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Installer/ProjectSettings/MemorySettings.asset b/Installer/ProjectSettings/MemorySettings.asset new file mode 100644 index 0000000..5b5face --- /dev/null +++ b/Installer/ProjectSettings/MemorySettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!387306366 &1 +MemorySettings: + m_ObjectHideFlags: 0 + m_EditorMemorySettings: + m_MainAllocatorBlockSize: -1 + m_ThreadAllocatorBlockSize: -1 + m_MainGfxBlockSize: -1 + m_ThreadGfxBlockSize: -1 + m_CacheBlockSize: -1 + m_TypetreeBlockSize: -1 + m_ProfilerBlockSize: -1 + m_ProfilerEditorBlockSize: -1 + m_BucketAllocatorGranularity: -1 + m_BucketAllocatorBucketsCount: -1 + m_BucketAllocatorBlockSize: -1 + m_BucketAllocatorBlockCount: -1 + m_ProfilerBucketAllocatorGranularity: -1 + m_ProfilerBucketAllocatorBucketsCount: -1 + m_ProfilerBucketAllocatorBlockSize: -1 + m_ProfilerBucketAllocatorBlockCount: -1 + m_TempAllocatorSizeMain: -1 + m_JobTempAllocatorBlockSize: -1 + m_BackgroundJobTempAllocatorBlockSize: -1 + m_JobTempAllocatorReducedBlockSize: -1 + m_TempAllocatorSizeGIBakingWorker: -1 + m_TempAllocatorSizeNavMeshWorker: -1 + m_TempAllocatorSizeAudioWorker: -1 + m_TempAllocatorSizeCloudWorker: -1 + m_TempAllocatorSizeGfx: -1 + m_TempAllocatorSizeJobWorker: -1 + m_TempAllocatorSizeBackgroundWorker: -1 + m_TempAllocatorSizePreloadManager: -1 + m_PlatformMemorySettings: {} diff --git a/Installer/ProjectSettings/PackageManagerSettings.asset b/Installer/ProjectSettings/PackageManagerSettings.asset index 18dfb52..956245b 100644 --- a/Installer/ProjectSettings/PackageManagerSettings.asset +++ b/Installer/ProjectSettings/PackageManagerSettings.asset @@ -12,7 +12,11 @@ MonoBehaviour: m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} m_Name: m_EditorClassIdentifier: + m_EnablePreReleasePackages: 0 + m_EnablePackageDependencies: 0 + m_AdvancedSettingsExpanded: 1 m_ScopedRegistriesSettingsExpanded: 1 + m_SeeAllPackageVersions: 0 oneTimeWarningShown: 0 m_Registries: - m_Id: main @@ -20,7 +24,9 @@ MonoBehaviour: m_Url: https://packages.unity.com m_Scopes: [] m_IsDefault: 1 - - m_Id: scoped:package.openupm.com + m_Capabilities: 7 + m_ConfigSource: 0 + - m_Id: scoped:project:package.openupm.com m_Name: package.openupm.com m_Url: https://package.openupm.com m_Scopes: @@ -31,30 +37,13 @@ MonoBehaviour: - org.nuget.system - org.nuget.r3 m_IsDefault: 0 - m_UserSelectedRegistryName: + m_Capabilities: 0 + m_ConfigSource: 4 + m_UserSelectedRegistryName: package.openupm.com m_UserAddingNewScopedRegistry: 0 m_RegistryInfoDraft: - m_ErrorMessage: - m_Original: - m_Id: scoped:package.openupm.com - m_Name: package.openupm.com - m_Url: https://package.openupm.com - m_Scopes: - - com.ivanmurzak - - extensions.unity - - org.nuget.com.ivanmurzak - - org.nuget.microsoft - - org.nuget.system - - org.nuget.r3 - m_IsDefault: 0 m_Modified: 0 - m_Name: package.openupm.com - m_Url: https://package.openupm.com - m_Scopes: - - com.ivanmurzak - - extensions.unity - - org.nuget.com.ivanmurzak - - org.nuget.microsoft - - org.nuget.system - - org.nuget.r3 - m_SelectedScopeIndex: 0 + m_ErrorMessage: + m_UserModificationsInstanceId: -826 + m_OriginalInstanceId: -830 + m_LoadAssets: 0 diff --git a/Installer/ProjectSettings/ProjectVersion.txt b/Installer/ProjectSettings/ProjectVersion.txt index 4c19129..8386a05 100644 --- a/Installer/ProjectSettings/ProjectVersion.txt +++ b/Installer/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2019.4.40f1 -m_EditorVersionWithRevision: 2019.4.40f1 (ffc62b691db5) +m_EditorVersion: 2021.3.45f1 +m_EditorVersionWithRevision: 2021.3.45f1 (0da89fac8e79) diff --git a/Installer/ProjectSettings/VersionControlSettings.asset b/Installer/ProjectSettings/VersionControlSettings.asset new file mode 100644 index 0000000..dca2881 --- /dev/null +++ b/Installer/ProjectSettings/VersionControlSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!890905787 &1 +VersionControlSettings: + m_ObjectHideFlags: 0 + m_Mode: Visible Meta Files + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/Installer/ProjectSettings/boot.config b/Installer/ProjectSettings/boot.config new file mode 100644 index 0000000..e69de29 diff --git a/Installer/UserSettings/EditorUserSettings.asset b/Installer/UserSettings/EditorUserSettings.asset new file mode 100644 index 0000000..4681d1d --- /dev/null +++ b/Installer/UserSettings/EditorUserSettings.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!162 &1 +EditorUserSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_ConfigSettings: + vcSharedLogLevel: + value: 0d5e400f0650 + flags: 0 + m_VCAutomaticAdd: 1 + m_VCDebugCom: 0 + m_VCDebugCmd: 0 + m_VCDebugOut: 0 + m_SemanticMergeMode: 2 + m_VCShowFailedCheckout: 1 + m_VCOverwriteFailedCheckoutAssets: 1 + m_VCOverlayIcons: 1 + m_VCAllowAsyncUpdate: 0 diff --git a/Installer/UserSettings/Search.settings b/Installer/UserSettings/Search.settings new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/Installer/UserSettings/Search.settings @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/Unity-Package/CLAUDE.md b/Unity-Package/CLAUDE.md new file mode 100644 index 0000000..3282f9d --- /dev/null +++ b/Unity-Package/CLAUDE.md @@ -0,0 +1,112 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Unity Package Structure + +This is a Unity package project for the **Image Loader** library - an asynchronous image loading system with two-layer caching (Memory and Disk). The package is located at `Assets/root/` within the Unity project. + +### Key Architecture Components + +1. **Core System (`ImageLoader.cs`)**: Static entry point providing loading methods for `Sprite` and `Texture2D` +2. **Future System**: Async operation wrapper (`IFuture`, `Future`) for handling loading lifecycle +3. **Reference System**: Memory management for `Reference` to prevent memory leaks +4. **Cache Layers**: Memory cache (fast) and Disk cache (persistent) with configurable settings +5. **Consumer System**: Extension methods to directly set loaded images into Unity components + +### Assembly Structure + +- **`Extensions.Unity.ImageLoader`**: Main runtime assembly (depends on UniTask) +- **`Extensions.Unity.ImageLoader.Tests`**: Shared test utilities +- **`Extensions.Unity.ImageLoader.Tests.Editor`**: Editor-specific tests (NUnit) +- **`Extensions.Unity.ImageLoader.Tests.Runtime`**: Runtime tests (NUnit) +- **`Extensions.Unity.ImageLoader.Samples`**: Example code and usage samples + +## Development Commands + +### Testing +- **Editor Tests**: Use Unity Test Runner window (Window → General → Test Runner) - Editor tab +- **Runtime Tests**: Use Unity Test Runner window (Window → General → Test Runner) - PlayMode tab +- **Command Line**: Unity supports running tests via batch mode with `-runTests` parameter + +### Building/Development +- Unity package development uses Unity Editor directly +- No external build system (npm/gradle/etc) - Unity handles compilation +- Package validation through Unity Package Manager + +### Dependencies +- **UniTask 2.5.10**: Async/await support for Unity (via OpenUPM) +- **Unity Test Framework 1.4.6**: Testing framework +- **Unity uGUI 1.0.0**: UI components for image consumers + +## Code Architecture Patterns + +### Loading Pattern +```csharp +// Basic loading +await ImageLoader.LoadSprite(url) + +// With consumer (auto-assignment) +await ImageLoader.LoadSprite(url).Consume(image) + +// With lifecycle events +ImageLoader.LoadSprite(url) + .LoadedFromMemoryCache(sprite => ...) + .LoadedFromDiskCache(sprite => ...) + .LoadedFromSource(sprite => ...) + .Then(sprite => ...) + .Failed(ex => ...) + .Consume(image) + .Forget(); +``` + +### Memory Management +- Use `LoadSpriteRef()` instead of `LoadSprite()` for automatic memory management +- References are disposed when target components are destroyed +- Manual disposal via `reference.Dispose()` or `reference.DisposeOnDestroy(component)` + +### Caching System +- Memory cache: Fast access, cleared on low memory +- Disk cache: Persistent across sessions (not available on WebGL) +- Both layers configurable globally via `ImageLoader.settings` or per-request + +## Testing Approach + +Tests are organized into: +- **Base utilities** (`Assets/root/Tests/Base/Utils/`): Shared test helpers and fake implementations +- **Editor tests**: Unit tests running in editor mode +- **Runtime tests**: Integration tests running in play mode + +Test structure uses: +- `FakeFuture`: Mock implementation for testing lifecycle events +- `TestUtils`: Loading utilities with test image URLs +- `FutureListener`: Event tracking for async operations + +## Key Files and Locations + +- Main API: `Assets/root/Runtime/ImageLoader.cs` +- Future system: `Assets/root/Runtime/Future/Future.cs` and related files +- Extensions: `Assets/root/Runtime/Future/Extensions/FutureEx.*.cs` +- Cache implementation: `Assets/root/Runtime/ImageLoader.Cache.*.cs` +- Sample usage: `Assets/root/Samples/Sample*.cs` +- Package definition: `Assets/root/package.json` + +## Common Development Tasks + +### Adding New Features +1. Implement core functionality in `Assets/root/Runtime/` +2. Add extension methods in `Assets/root/Runtime/Future/Extensions/` if needed +3. Create sample usage in `Assets/root/Samples/` +4. Add tests in `Assets/root/Tests/Editor/` and `Assets/root/Tests/Runtime/` + +### Testing New Code +1. Create test methods in appropriate test assembly +2. Use `TestUtils` helpers for loading operations +3. Use `FutureListener` for tracking async events +4. Test both success and failure scenarios + +### Performance Considerations +- Memory management critical due to large Texture2D objects +- Use Reference system for automatic cleanup +- Consider cache settings impact on memory usage +- Test WebGL compatibility (no disk cache) \ No newline at end of file diff --git a/Unity-Package/ProjectSettings/ProjectVersion.txt b/Unity-Package/ProjectSettings/ProjectVersion.txt index 4c19129..52515b4 100644 --- a/Unity-Package/ProjectSettings/ProjectVersion.txt +++ b/Unity-Package/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2019.4.40f1 -m_EditorVersionWithRevision: 2019.4.40f1 (ffc62b691db5) +m_EditorVersion: 2022.3.44f1 +m_EditorVersionWithRevision: 2022.3.44f1 (c3ae09b9f03c) diff --git a/Unity-Package/ProjectSettings/SceneTemplateSettings.json b/Unity-Package/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..5e97f83 --- /dev/null +++ b/Unity-Package/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,121 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicMaterial", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "defaultInstantiationMode": 0 + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "defaultInstantiationMode": 1 + }, + "newSceneOverride": 0 +} \ No newline at end of file diff --git a/Unity-Package/Test Images/ImageA.jpg b/docs/img/test/ImageA.jpg similarity index 100% rename from Unity-Package/Test Images/ImageA.jpg rename to docs/img/test/ImageA.jpg diff --git a/Unity-Package/Test Images/ImageB.png b/docs/img/test/ImageB.png similarity index 100% rename from Unity-Package/Test Images/ImageB.png rename to docs/img/test/ImageB.png diff --git a/Unity-Package/Test Images/ImageC.png b/docs/img/test/ImageC.png similarity index 100% rename from Unity-Package/Test Images/ImageC.png rename to docs/img/test/ImageC.png