├── .github └── FUNDING.yml ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── AlternativeDestributionOptions.md ├── Assets ├── Sample.meta ├── Sample │ ├── 1. MinimalStart.meta │ ├── 1. MinimalStart │ │ ├── MinimalStart.cs │ │ ├── MinimalStart.cs.meta │ │ ├── MinimalStart.unity │ │ └── MinimalStart.unity.meta │ ├── 2. DatabaseOperations.meta │ └── 2. DatabaseOperations │ │ ├── DatabaseOperations.unity │ │ ├── DatabaseOperations.unity.meta │ │ ├── Scripts.meta │ │ └── Scripts │ │ ├── Database.meta │ │ ├── Database │ │ ├── Model.meta │ │ ├── Model │ │ │ ├── LevelData.cs │ │ │ └── LevelData.cs.meta │ │ ├── SQLiteContext.cs │ │ ├── SQLiteContext.cs.meta │ │ ├── SQLiteContextFactory.cs │ │ └── SQLiteContextFactory.cs.meta │ │ ├── DatabaseOperations.cs │ │ └── DatabaseOperations.cs.meta ├── _PackageRoot.meta └── _PackageRoot │ ├── Documentation~ │ └── README.md │ ├── Editor.meta │ ├── Editor │ ├── Gizmos.meta │ ├── Gizmos │ │ └── .gitignore │ ├── Scripts.meta │ └── Scripts │ │ └── .gitignore │ ├── Plugins.meta │ ├── Plugins │ ├── SQLitePCLRaw.lib.e_sqlite3.android.2.1.10.meta │ └── SQLitePCLRaw.lib.e_sqlite3.android.2.1.10 │ │ ├── arm64-v8a.meta │ │ ├── arm64-v8a │ │ ├── libe_sqlite3.so │ │ └── libe_sqlite3.so.meta │ │ ├── armeabi-v7a.meta │ │ ├── armeabi-v7a │ │ ├── libe_sqlite3.so │ │ └── libe_sqlite3.so.meta │ │ ├── x86.meta │ │ ├── x86 │ │ ├── libe_sqlite3.so │ │ └── libe_sqlite3.so.meta │ │ ├── x86_64.meta │ │ └── x86_64 │ │ ├── libe_sqlite3.so │ │ └── libe_sqlite3.so.meta │ ├── README.md │ ├── README.md.meta │ ├── Runtime.meta │ ├── Runtime │ ├── .gitignore │ ├── EFCore.SQLite.Bundle.asmdef │ ├── EFCore.SQLite.Bundle.asmdef.meta │ ├── SQLiteContextFactory.cs │ ├── SQLiteContextFactory.cs.meta │ ├── Startup.cs │ ├── Startup.cs.meta │ ├── link.xml │ └── link.xml.meta │ ├── Tests.meta │ ├── Tests │ ├── Editor.meta │ ├── Editor │ │ └── .gitignore │ ├── Runtime.meta │ └── Runtime │ │ └── .gitignore │ ├── package.json │ └── package.json.meta ├── Commands ├── NPM--AddUser.bat ├── NPM--CopyREADME.bat ├── NPM--UpdateDependencies.bat ├── NPM--VersionMajor.bat ├── NPM--VersionMinor.bat ├── NPM--VersionPatch.bat ├── [!!!]--GitHub--Release.bat ├── [!!!]--NPM--Publish.bat └── [!]--GitHub--DraftRelease.bat ├── LICENSE ├── Packages ├── manifest.json └── packages-lock.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── MemorySettings.asset ├── MultiplayerManager.asset ├── NavMeshAreas.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── SceneTemplateSettings.json ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset └── VersionControlSettings.asset ├── README.md ├── UserSettings ├── EditorUserSettings.asset ├── Layouts │ └── default-6000.dwlt ├── Search.index └── Search.settings ├── efcore_sqlite.jpg ├── gitSubTreePushToUPM.bat └── gitSubTreePushToUPM.makefile /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: IvanMurzak 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # 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 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | polar: # Replace with a single Polar username 13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username 14 | thanks_dev: # Replace with a single thanks.dev username 15 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 16 | -------------------------------------------------------------------------------- /.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 | 13 | # Asset meta data should only be ignored when the corresponding asset is also ignored 14 | !/[Aa]ssets/**/*.meta 15 | 16 | # Uncomment this line if you wish to ignore the asset store tools plugin 17 | # /[Aa]ssets/AssetStoreTools* 18 | 19 | # Autogenerated Jetbrains Rider plugin 20 | [Aa]ssets/Plugins/Editor/JetBrains* 21 | 22 | # Visual Studio cache directory 23 | .vs/ 24 | 25 | # Gradle cache directory 26 | .gradle/ 27 | 28 | # Autogenerated VS/MD/Consulo solution and project files 29 | ExportedObj/ 30 | .consulo/ 31 | *.csproj 32 | *.unityproj 33 | *.sln 34 | *.suo 35 | *.tmp 36 | *.user 37 | *.userprefs 38 | *.pidb 39 | *.booproj 40 | *.svd 41 | *.pdb 42 | *.mdb 43 | *.opendb 44 | *.VC.db 45 | 46 | # Unity3D generated meta files 47 | *.pidb.meta 48 | *.pdb.meta 49 | *.mdb.meta 50 | 51 | # Unity3D generated file on crash reports 52 | sysinfo.txt 53 | 54 | # Builds 55 | *.apk 56 | *.unitypackage 57 | 58 | # Crashlytics generated file 59 | crashlytics-build.properties 60 | 61 | */AndroidLogcatSettings.asset 62 | /Assets/StreamingAssets 63 | 64 | # Crashlytics generated file 65 | crashlytics-build.properties 66 | 67 | # ODIN Ignore the auto-generated AOT compatibility dll. 68 | /Assets/Plugins/Sirenix/Assemblies/AOT/* 69 | /Assets/Plugins/Sirenix/Assemblies/AOT** 70 | 71 | # ODIN Ignore all unpacked demos. 72 | /Assets/Plugins/Sirenix/Demos/* 73 | 74 | # ODIN plugin 75 | /Assets/Plugins/Sirenix** 76 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "visualstudiotoolsforunity.vstuc" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Attach to Unity", 6 | "type": "vstuc", 7 | "request": "attach" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | "**/.DS_Store": true, 4 | "**/.git": true, 5 | "**/.vs": true, 6 | "**/.gitmodules": true, 7 | "**/.vsconfig": true, 8 | "**/*.booproj": true, 9 | "**/*.pidb": true, 10 | "**/*.suo": true, 11 | "**/*.user": true, 12 | "**/*.userprefs": true, 13 | "**/*.unityproj": true, 14 | "**/*.dll": true, 15 | "**/*.exe": true, 16 | "**/*.pdf": true, 17 | "**/*.mid": true, 18 | "**/*.midi": true, 19 | "**/*.wav": true, 20 | "**/*.gif": true, 21 | "**/*.ico": true, 22 | "**/*.jpg": true, 23 | "**/*.jpeg": true, 24 | "**/*.png": true, 25 | "**/*.psd": true, 26 | "**/*.tga": true, 27 | "**/*.tif": true, 28 | "**/*.tiff": true, 29 | "**/*.3ds": true, 30 | "**/*.3DS": true, 31 | "**/*.fbx": true, 32 | "**/*.FBX": true, 33 | "**/*.lxo": true, 34 | "**/*.LXO": true, 35 | "**/*.ma": true, 36 | "**/*.MA": true, 37 | "**/*.obj": true, 38 | "**/*.OBJ": true, 39 | "**/*.asset": true, 40 | "**/*.cubemap": true, 41 | "**/*.flare": true, 42 | "**/*.mat": true, 43 | "**/*.meta": true, 44 | "**/*.prefab": true, 45 | "**/*.unity": true, 46 | "build/": true, 47 | "Build/": true, 48 | "Library/": true, 49 | "library/": true, 50 | "obj/": true, 51 | "Obj/": true, 52 | "Logs/": true, 53 | "logs/": true, 54 | "ProjectSettings/": true, 55 | "UserSettings/": true, 56 | "temp/": true, 57 | "Temp/": true 58 | }, 59 | "dotnet.defaultSolution": "Unity-EFCore-SQLite.sln", 60 | "cSpell.words": [ 61 | "efcore", 62 | "entityframework", 63 | "entityframeworkcore", 64 | "Murzak", 65 | "sqlitepclraw" 66 | ] 67 | } -------------------------------------------------------------------------------- /AlternativeDestributionOptions.md: -------------------------------------------------------------------------------- 1 | # NPMJS 2 | ![image](https://user-images.githubusercontent.com/9135028/198755166-5d0f50a7-33e1-4c18-9462-ed880d099908.png) 3 | 4 | NPMJS is the most popular Package destribution portal in the world. It is used for any packages from different programming areas of knowledge. We are interesting in using the platform for having dependencies on Unity packages only and publishing our own. It is free to use and work very well for my opinion. 5 | ### Pros 6 | - Ultra fast deployment 7 | - Easy creation of new versions 8 | - Unity Package Manager supports versioning from NPMJS 9 | - Trusted platform by huge community 10 | ### Cons 11 | - Need to create account and authorize once 12 | 13 |

14 | 15 | # OpenUPM 16 | ![image](https://user-images.githubusercontent.com/9135028/198767467-993b7b46-7d5f-440a-a15e-2d7c7b968bcb.png) 17 | 18 | Popular in Unity community platform for package destribution. Created as open sourced project for helping people to destribute their packages. 19 | ### Pros 20 | - Made especially for Unity 21 | - No registration needed 22 | - Package can be deployed directly from GitHub repository 23 | ### Cons 24 | - Long deployment duration (10 - 60 minutes) 25 | - Small community (in comparison to other options) 26 | 27 |

28 | 29 | # GitHub Packages 30 | ![image](https://user-images.githubusercontent.com/9135028/198767290-688cf8eb-a350-40c4-beb6-a50dcbe536a6.png) 31 | 32 | Amazing GitHub feature, also Unity support it 33 | ### Pros 34 | - Ultra fast deployment 35 | - Trusted platform by huge community 36 | ### Cons 37 | - Does not support version fetching, it means you can't see when new version of the package is available in UPM. To install new version you should manually change the version in a project. 38 | 39 |

40 | 41 | # GitHub Repository 42 | ![image](https://user-images.githubusercontent.com/9135028/198767290-688cf8eb-a350-40c4-beb6-a50dcbe536a6.png) 43 | 44 | Unity UPM support direct GitHub links to public repositories for using them as a package. The only required thing - the link should point on a folder which contains `package.json` file. 45 | ### Pros 46 | - no special steps required, just use your public repository as a package in UPM 47 | ### Cons 48 | - Does not support version fetching, it means you can't see when new version of the package is available in UPM. To install new version you should manually change the version in a project. 49 | 50 |

51 | 52 | # How to use 53 | - "Use this template" green button at top right corner of GitHub page 54 | - Clone your new repository 55 | - Add all your stuff to Assets/_PackageRoot directory 56 | - Update Assets/_PackageRoot/package.json to yours 57 | - (on Windows) execute gitSubTreePushToUPM.bat 58 | - (on Mac) execute gitSubTreePushToUPM.makefile 59 | 60 | - (optional) Create release from UPM branch on GitHub web page for support different versions 61 | 62 | ![alt text](https://neogeek.dev/images/creating-custom-packages-for-unity-2018.3--git-release.png) 63 | 64 | 65 | # How to import your package to Unity project 66 | You may use one of the variants 67 | 68 | ## Variant 1 69 | - Select "Add package from git URL" 70 | - Paste URL to your GitHub repository with simple modification: 71 | - https://github.com/USER/REPO.git#upm 72 | Dont forget to replace **USER** and **REPO** to yours 73 | 74 | ![alt text](https://neogeek.dev/images/creating-custom-packages-for-unity-2018.3--package-manager.png) 75 | 76 | ### **Or** you may use special version if you create one 77 | https://github.com/USER/REPO.git#v1.0.0 78 | Dont forget to replace **USER** and **REPO** to yours 79 | 80 | ## Variant 2 81 | Modify manifest.json file. Change "your.own.package" to the name of your package. 82 | Dont forget to replace **USER** and **REPO** to yours. 83 |
{
84 |     "dependencies": {
85 |         "your.own.package": "https://github.com/USER/REPO.git#upm"
86 |     }
87 | }
88 | 
89 | 90 | ### **Or** you may use special version if you create one 91 | Dont forget to replace **USER** and **REPO** to yours. 92 |
{
93 |     "dependencies": {
94 |         "your.own.package": "https://github.com/USER/REPO.git#v1.0.0"
95 |     }
96 | }
97 | 
98 | -------------------------------------------------------------------------------- /Assets/Sample.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 37e241a784172499e8f6784a7c0e985c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/1. MinimalStart.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d504d8b46702c3047beefb46a3afa4ee 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/1. MinimalStart/MinimalStart.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class MinimalStart : MonoBehaviour 4 | { 5 | void Awake() 6 | { 7 | SQLitePCLRaw.Startup.Setup(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Assets/Sample/1. MinimalStart/MinimalStart.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 21a49824731ae441291ef9d6af34f50c -------------------------------------------------------------------------------- /Assets/Sample/1. MinimalStart/MinimalStart.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 10 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_UseRadianceAmbientProbe: 0 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 13 46 | m_BakeOnSceneLoad: 0 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_EnvironmentLightingMode: 0 53 | m_EnableBakedLightmaps: 1 54 | m_EnableRealtimeLightmaps: 0 55 | m_LightmapEditorSettings: 56 | serializedVersion: 12 57 | m_Resolution: 2 58 | m_BakeResolution: 40 59 | m_AtlasSize: 1024 60 | m_AO: 0 61 | m_AOMaxDistance: 1 62 | m_CompAOExponent: 1 63 | m_CompAOExponentDirect: 0 64 | m_ExtractAmbientOcclusion: 0 65 | m_Padding: 2 66 | m_LightmapParameters: {fileID: 0} 67 | m_LightmapsBakeMode: 1 68 | m_TextureCompression: 1 69 | m_ReflectionCompression: 2 70 | m_MixedBakeMode: 2 71 | m_BakeBackend: 1 72 | m_PVRSampling: 1 73 | m_PVRDirectSampleCount: 32 74 | m_PVRSampleCount: 512 75 | m_PVRBounces: 2 76 | m_PVREnvironmentSampleCount: 256 77 | m_PVREnvironmentReferencePointCount: 2048 78 | m_PVRFilteringMode: 1 79 | m_PVRDenoiserTypeDirect: 1 80 | m_PVRDenoiserTypeIndirect: 1 81 | m_PVRDenoiserTypeAO: 1 82 | m_PVRFilterTypeDirect: 0 83 | m_PVRFilterTypeIndirect: 0 84 | m_PVRFilterTypeAO: 0 85 | m_PVREnvironmentMIS: 1 86 | m_PVRCulling: 1 87 | m_PVRFilteringGaussRadiusDirect: 1 88 | m_PVRFilteringGaussRadiusIndirect: 1 89 | m_PVRFilteringGaussRadiusAO: 1 90 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 91 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 92 | m_PVRFilteringAtrousPositionSigmaAO: 1 93 | m_ExportTrainingData: 0 94 | m_TrainingDataDestination: TrainingData 95 | m_LightProbeSampleCountMultiplier: 4 96 | m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} 97 | m_LightingSettings: {fileID: 0} 98 | --- !u!196 &4 99 | NavMeshSettings: 100 | serializedVersion: 2 101 | m_ObjectHideFlags: 0 102 | m_BuildSettings: 103 | serializedVersion: 3 104 | agentTypeID: 0 105 | agentRadius: 0.5 106 | agentHeight: 2 107 | agentSlope: 45 108 | agentClimb: 0.4 109 | ledgeDropHeight: 0 110 | maxJumpAcrossDistance: 0 111 | minRegionArea: 2 112 | manualCellSize: 0 113 | cellSize: 0.16666667 114 | manualTileSize: 0 115 | tileSize: 256 116 | buildHeightMesh: 0 117 | maxJobWorkers: 0 118 | preserveTilesOutsideBounds: 0 119 | debug: 120 | m_Flags: 0 121 | m_NavMeshData: {fileID: 0} 122 | --- !u!1 &761166606 123 | GameObject: 124 | m_ObjectHideFlags: 0 125 | m_CorrespondingSourceObject: {fileID: 0} 126 | m_PrefabInstance: {fileID: 0} 127 | m_PrefabAsset: {fileID: 0} 128 | serializedVersion: 6 129 | m_Component: 130 | - component: {fileID: 761166609} 131 | - component: {fileID: 761166608} 132 | m_Layer: 0 133 | m_Name: Main Camera 134 | m_TagString: MainCamera 135 | m_Icon: {fileID: 0} 136 | m_NavMeshLayer: 0 137 | m_StaticEditorFlags: 0 138 | m_IsActive: 1 139 | --- !u!20 &761166608 140 | Camera: 141 | m_ObjectHideFlags: 0 142 | m_CorrespondingSourceObject: {fileID: 0} 143 | m_PrefabInstance: {fileID: 0} 144 | m_PrefabAsset: {fileID: 0} 145 | m_GameObject: {fileID: 761166606} 146 | m_Enabled: 1 147 | serializedVersion: 2 148 | m_ClearFlags: 2 149 | m_BackGroundColor: {r: 0.27323988, g: 0.24906045, b: 0.30817598, a: 0} 150 | m_projectionMatrixMode: 1 151 | m_GateFitMode: 2 152 | m_FOVAxisMode: 0 153 | m_Iso: 200 154 | m_ShutterSpeed: 0.005 155 | m_Aperture: 16 156 | m_FocusDistance: 10 157 | m_FocalLength: 50 158 | m_BladeCount: 5 159 | m_Curvature: {x: 2, y: 11} 160 | m_BarrelClipping: 0.25 161 | m_Anamorphism: 0 162 | m_SensorSize: {x: 36, y: 24} 163 | m_LensShift: {x: 0, y: 0} 164 | m_NormalizedViewPortRect: 165 | serializedVersion: 2 166 | x: 0 167 | y: 0 168 | width: 1 169 | height: 1 170 | near clip plane: 0.3 171 | far clip plane: 1000 172 | field of view: 60 173 | orthographic: 0 174 | orthographic size: 5 175 | m_Depth: -1 176 | m_CullingMask: 177 | serializedVersion: 2 178 | m_Bits: 4294967295 179 | m_RenderingPath: -1 180 | m_TargetTexture: {fileID: 0} 181 | m_TargetDisplay: 0 182 | m_TargetEye: 3 183 | m_HDR: 1 184 | m_AllowMSAA: 1 185 | m_AllowDynamicResolution: 0 186 | m_ForceIntoRT: 0 187 | m_OcclusionCulling: 1 188 | m_StereoConvergence: 10 189 | m_StereoSeparation: 0.022 190 | --- !u!4 &761166609 191 | Transform: 192 | m_ObjectHideFlags: 0 193 | m_CorrespondingSourceObject: {fileID: 0} 194 | m_PrefabInstance: {fileID: 0} 195 | m_PrefabAsset: {fileID: 0} 196 | m_GameObject: {fileID: 761166606} 197 | serializedVersion: 2 198 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 199 | m_LocalPosition: {x: 0, y: 1, z: -10} 200 | m_LocalScale: {x: 1, y: 1, z: 1} 201 | m_ConstrainProportionsScale: 0 202 | m_Children: [] 203 | m_Father: {fileID: 0} 204 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 205 | --- !u!1 &1929491531 206 | GameObject: 207 | m_ObjectHideFlags: 0 208 | m_CorrespondingSourceObject: {fileID: 0} 209 | m_PrefabInstance: {fileID: 0} 210 | m_PrefabAsset: {fileID: 0} 211 | serializedVersion: 6 212 | m_Component: 213 | - component: {fileID: 1929491533} 214 | - component: {fileID: 1929491532} 215 | m_Layer: 0 216 | m_Name: Directional Light 217 | m_TagString: Untagged 218 | m_Icon: {fileID: 0} 219 | m_NavMeshLayer: 0 220 | m_StaticEditorFlags: 0 221 | m_IsActive: 1 222 | --- !u!108 &1929491532 223 | Light: 224 | m_ObjectHideFlags: 0 225 | m_CorrespondingSourceObject: {fileID: 0} 226 | m_PrefabInstance: {fileID: 0} 227 | m_PrefabAsset: {fileID: 0} 228 | m_GameObject: {fileID: 1929491531} 229 | m_Enabled: 1 230 | serializedVersion: 11 231 | m_Type: 1 232 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 233 | m_Intensity: 1 234 | m_Range: 10 235 | m_SpotAngle: 30 236 | m_InnerSpotAngle: 21.80208 237 | m_CookieSize: 10 238 | m_Shadows: 239 | m_Type: 2 240 | m_Resolution: -1 241 | m_CustomResolution: -1 242 | m_Strength: 1 243 | m_Bias: 0.05 244 | m_NormalBias: 0.4 245 | m_NearPlane: 0.2 246 | m_CullingMatrixOverride: 247 | e00: 1 248 | e01: 0 249 | e02: 0 250 | e03: 0 251 | e10: 0 252 | e11: 1 253 | e12: 0 254 | e13: 0 255 | e20: 0 256 | e21: 0 257 | e22: 1 258 | e23: 0 259 | e30: 0 260 | e31: 0 261 | e32: 0 262 | e33: 1 263 | m_UseCullingMatrixOverride: 0 264 | m_Cookie: {fileID: 0} 265 | m_DrawHalo: 0 266 | m_Flare: {fileID: 0} 267 | m_RenderMode: 0 268 | m_CullingMask: 269 | serializedVersion: 2 270 | m_Bits: 4294967295 271 | m_RenderingLayerMask: 1 272 | m_Lightmapping: 4 273 | m_LightShadowCasterMode: 0 274 | m_AreaSize: {x: 1, y: 1} 275 | m_BounceIntensity: 1 276 | m_ColorTemperature: 6570 277 | m_UseColorTemperature: 0 278 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 279 | m_UseBoundingSphereOverride: 0 280 | m_UseViewFrustumForShadowCasterCull: 1 281 | m_ForceVisible: 0 282 | m_ShadowRadius: 0 283 | m_ShadowAngle: 0 284 | m_LightUnit: 1 285 | m_LuxAtDistance: 1 286 | m_EnableSpotReflector: 1 287 | --- !u!4 &1929491533 288 | Transform: 289 | m_ObjectHideFlags: 0 290 | m_CorrespondingSourceObject: {fileID: 0} 291 | m_PrefabInstance: {fileID: 0} 292 | m_PrefabAsset: {fileID: 0} 293 | m_GameObject: {fileID: 1929491531} 294 | serializedVersion: 2 295 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 296 | m_LocalPosition: {x: 0, y: 3, z: 0} 297 | m_LocalScale: {x: 1, y: 1, z: 1} 298 | m_ConstrainProportionsScale: 0 299 | m_Children: [] 300 | m_Father: {fileID: 0} 301 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 302 | --- !u!1 &2059406953 303 | GameObject: 304 | m_ObjectHideFlags: 0 305 | m_CorrespondingSourceObject: {fileID: 0} 306 | m_PrefabInstance: {fileID: 0} 307 | m_PrefabAsset: {fileID: 0} 308 | serializedVersion: 6 309 | m_Component: 310 | - component: {fileID: 2059406955} 311 | - component: {fileID: 2059406954} 312 | m_Layer: 0 313 | m_Name: MinimalStart 314 | m_TagString: Untagged 315 | m_Icon: {fileID: 0} 316 | m_NavMeshLayer: 0 317 | m_StaticEditorFlags: 0 318 | m_IsActive: 1 319 | --- !u!114 &2059406954 320 | MonoBehaviour: 321 | m_ObjectHideFlags: 0 322 | m_CorrespondingSourceObject: {fileID: 0} 323 | m_PrefabInstance: {fileID: 0} 324 | m_PrefabAsset: {fileID: 0} 325 | m_GameObject: {fileID: 2059406953} 326 | m_Enabled: 1 327 | m_EditorHideFlags: 0 328 | m_Script: {fileID: 11500000, guid: 21a49824731ae441291ef9d6af34f50c, type: 3} 329 | m_Name: 330 | m_EditorClassIdentifier: 331 | --- !u!4 &2059406955 332 | Transform: 333 | m_ObjectHideFlags: 0 334 | m_CorrespondingSourceObject: {fileID: 0} 335 | m_PrefabInstance: {fileID: 0} 336 | m_PrefabAsset: {fileID: 0} 337 | m_GameObject: {fileID: 2059406953} 338 | serializedVersion: 2 339 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 340 | m_LocalPosition: {x: 0, y: 0, z: 0} 341 | m_LocalScale: {x: 1, y: 1, z: 1} 342 | m_ConstrainProportionsScale: 0 343 | m_Children: [] 344 | m_Father: {fileID: 0} 345 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 346 | --- !u!1660057539 &9223372036854775807 347 | SceneRoots: 348 | m_ObjectHideFlags: 0 349 | m_Roots: 350 | - {fileID: 761166609} 351 | - {fileID: 1929491533} 352 | - {fileID: 2059406955} 353 | -------------------------------------------------------------------------------- /Assets/Sample/1. MinimalStart/MinimalStart.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9bfb81c36292d484e9b130a92dc763a0 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4e5832fef7e1b9b4487092bb9bee1e58 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/DatabaseOperations.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 10 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_UseRadianceAmbientProbe: 0 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 13 46 | m_BakeOnSceneLoad: 0 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_EnvironmentLightingMode: 0 53 | m_EnableBakedLightmaps: 1 54 | m_EnableRealtimeLightmaps: 0 55 | m_LightmapEditorSettings: 56 | serializedVersion: 12 57 | m_Resolution: 2 58 | m_BakeResolution: 40 59 | m_AtlasSize: 1024 60 | m_AO: 0 61 | m_AOMaxDistance: 1 62 | m_CompAOExponent: 1 63 | m_CompAOExponentDirect: 0 64 | m_ExtractAmbientOcclusion: 0 65 | m_Padding: 2 66 | m_LightmapParameters: {fileID: 0} 67 | m_LightmapsBakeMode: 1 68 | m_TextureCompression: 1 69 | m_ReflectionCompression: 2 70 | m_MixedBakeMode: 2 71 | m_BakeBackend: 1 72 | m_PVRSampling: 1 73 | m_PVRDirectSampleCount: 32 74 | m_PVRSampleCount: 512 75 | m_PVRBounces: 2 76 | m_PVREnvironmentSampleCount: 256 77 | m_PVREnvironmentReferencePointCount: 2048 78 | m_PVRFilteringMode: 1 79 | m_PVRDenoiserTypeDirect: 1 80 | m_PVRDenoiserTypeIndirect: 1 81 | m_PVRDenoiserTypeAO: 1 82 | m_PVRFilterTypeDirect: 0 83 | m_PVRFilterTypeIndirect: 0 84 | m_PVRFilterTypeAO: 0 85 | m_PVREnvironmentMIS: 1 86 | m_PVRCulling: 1 87 | m_PVRFilteringGaussRadiusDirect: 1 88 | m_PVRFilteringGaussRadiusIndirect: 1 89 | m_PVRFilteringGaussRadiusAO: 1 90 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 91 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 92 | m_PVRFilteringAtrousPositionSigmaAO: 1 93 | m_ExportTrainingData: 0 94 | m_TrainingDataDestination: TrainingData 95 | m_LightProbeSampleCountMultiplier: 4 96 | m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} 97 | m_LightingSettings: {fileID: 0} 98 | --- !u!196 &4 99 | NavMeshSettings: 100 | serializedVersion: 2 101 | m_ObjectHideFlags: 0 102 | m_BuildSettings: 103 | serializedVersion: 3 104 | agentTypeID: 0 105 | agentRadius: 0.5 106 | agentHeight: 2 107 | agentSlope: 45 108 | agentClimb: 0.4 109 | ledgeDropHeight: 0 110 | maxJumpAcrossDistance: 0 111 | minRegionArea: 2 112 | manualCellSize: 0 113 | cellSize: 0.16666667 114 | manualTileSize: 0 115 | tileSize: 256 116 | buildHeightMesh: 0 117 | maxJobWorkers: 0 118 | preserveTilesOutsideBounds: 0 119 | debug: 120 | m_Flags: 0 121 | m_NavMeshData: {fileID: 0} 122 | --- !u!1 &761166606 123 | GameObject: 124 | m_ObjectHideFlags: 0 125 | m_CorrespondingSourceObject: {fileID: 0} 126 | m_PrefabInstance: {fileID: 0} 127 | m_PrefabAsset: {fileID: 0} 128 | serializedVersion: 6 129 | m_Component: 130 | - component: {fileID: 761166609} 131 | - component: {fileID: 761166608} 132 | m_Layer: 0 133 | m_Name: Main Camera 134 | m_TagString: MainCamera 135 | m_Icon: {fileID: 0} 136 | m_NavMeshLayer: 0 137 | m_StaticEditorFlags: 0 138 | m_IsActive: 1 139 | --- !u!20 &761166608 140 | Camera: 141 | m_ObjectHideFlags: 0 142 | m_CorrespondingSourceObject: {fileID: 0} 143 | m_PrefabInstance: {fileID: 0} 144 | m_PrefabAsset: {fileID: 0} 145 | m_GameObject: {fileID: 761166606} 146 | m_Enabled: 1 147 | serializedVersion: 2 148 | m_ClearFlags: 2 149 | m_BackGroundColor: {r: 0.27450982, g: 0.2509804, b: 0.30980393, a: 0} 150 | m_projectionMatrixMode: 1 151 | m_GateFitMode: 2 152 | m_FOVAxisMode: 0 153 | m_Iso: 200 154 | m_ShutterSpeed: 0.005 155 | m_Aperture: 16 156 | m_FocusDistance: 10 157 | m_FocalLength: 50 158 | m_BladeCount: 5 159 | m_Curvature: {x: 2, y: 11} 160 | m_BarrelClipping: 0.25 161 | m_Anamorphism: 0 162 | m_SensorSize: {x: 36, y: 24} 163 | m_LensShift: {x: 0, y: 0} 164 | m_NormalizedViewPortRect: 165 | serializedVersion: 2 166 | x: 0 167 | y: 0 168 | width: 1 169 | height: 1 170 | near clip plane: 0.3 171 | far clip plane: 1000 172 | field of view: 60 173 | orthographic: 0 174 | orthographic size: 5 175 | m_Depth: -1 176 | m_CullingMask: 177 | serializedVersion: 2 178 | m_Bits: 4294967295 179 | m_RenderingPath: -1 180 | m_TargetTexture: {fileID: 0} 181 | m_TargetDisplay: 0 182 | m_TargetEye: 3 183 | m_HDR: 1 184 | m_AllowMSAA: 1 185 | m_AllowDynamicResolution: 0 186 | m_ForceIntoRT: 0 187 | m_OcclusionCulling: 1 188 | m_StereoConvergence: 10 189 | m_StereoSeparation: 0.022 190 | --- !u!4 &761166609 191 | Transform: 192 | m_ObjectHideFlags: 0 193 | m_CorrespondingSourceObject: {fileID: 0} 194 | m_PrefabInstance: {fileID: 0} 195 | m_PrefabAsset: {fileID: 0} 196 | m_GameObject: {fileID: 761166606} 197 | serializedVersion: 2 198 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 199 | m_LocalPosition: {x: 0, y: 1, z: -10} 200 | m_LocalScale: {x: 1, y: 1, z: 1} 201 | m_ConstrainProportionsScale: 0 202 | m_Children: [] 203 | m_Father: {fileID: 0} 204 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 205 | --- !u!1 &1929491531 206 | GameObject: 207 | m_ObjectHideFlags: 0 208 | m_CorrespondingSourceObject: {fileID: 0} 209 | m_PrefabInstance: {fileID: 0} 210 | m_PrefabAsset: {fileID: 0} 211 | serializedVersion: 6 212 | m_Component: 213 | - component: {fileID: 1929491533} 214 | - component: {fileID: 1929491532} 215 | m_Layer: 0 216 | m_Name: Directional Light 217 | m_TagString: Untagged 218 | m_Icon: {fileID: 0} 219 | m_NavMeshLayer: 0 220 | m_StaticEditorFlags: 0 221 | m_IsActive: 1 222 | --- !u!108 &1929491532 223 | Light: 224 | m_ObjectHideFlags: 0 225 | m_CorrespondingSourceObject: {fileID: 0} 226 | m_PrefabInstance: {fileID: 0} 227 | m_PrefabAsset: {fileID: 0} 228 | m_GameObject: {fileID: 1929491531} 229 | m_Enabled: 1 230 | serializedVersion: 11 231 | m_Type: 1 232 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 233 | m_Intensity: 1 234 | m_Range: 10 235 | m_SpotAngle: 30 236 | m_InnerSpotAngle: 21.80208 237 | m_CookieSize: 10 238 | m_Shadows: 239 | m_Type: 2 240 | m_Resolution: -1 241 | m_CustomResolution: -1 242 | m_Strength: 1 243 | m_Bias: 0.05 244 | m_NormalBias: 0.4 245 | m_NearPlane: 0.2 246 | m_CullingMatrixOverride: 247 | e00: 1 248 | e01: 0 249 | e02: 0 250 | e03: 0 251 | e10: 0 252 | e11: 1 253 | e12: 0 254 | e13: 0 255 | e20: 0 256 | e21: 0 257 | e22: 1 258 | e23: 0 259 | e30: 0 260 | e31: 0 261 | e32: 0 262 | e33: 1 263 | m_UseCullingMatrixOverride: 0 264 | m_Cookie: {fileID: 0} 265 | m_DrawHalo: 0 266 | m_Flare: {fileID: 0} 267 | m_RenderMode: 0 268 | m_CullingMask: 269 | serializedVersion: 2 270 | m_Bits: 4294967295 271 | m_RenderingLayerMask: 1 272 | m_Lightmapping: 4 273 | m_LightShadowCasterMode: 0 274 | m_AreaSize: {x: 1, y: 1} 275 | m_BounceIntensity: 1 276 | m_ColorTemperature: 6570 277 | m_UseColorTemperature: 0 278 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 279 | m_UseBoundingSphereOverride: 0 280 | m_UseViewFrustumForShadowCasterCull: 1 281 | m_ForceVisible: 0 282 | m_ShadowRadius: 0 283 | m_ShadowAngle: 0 284 | m_LightUnit: 1 285 | m_LuxAtDistance: 1 286 | m_EnableSpotReflector: 1 287 | --- !u!4 &1929491533 288 | Transform: 289 | m_ObjectHideFlags: 0 290 | m_CorrespondingSourceObject: {fileID: 0} 291 | m_PrefabInstance: {fileID: 0} 292 | m_PrefabAsset: {fileID: 0} 293 | m_GameObject: {fileID: 1929491531} 294 | serializedVersion: 2 295 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 296 | m_LocalPosition: {x: 0, y: 3, z: 0} 297 | m_LocalScale: {x: 1, y: 1, z: 1} 298 | m_ConstrainProportionsScale: 0 299 | m_Children: [] 300 | m_Father: {fileID: 0} 301 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 302 | --- !u!1 &2059406953 303 | GameObject: 304 | m_ObjectHideFlags: 0 305 | m_CorrespondingSourceObject: {fileID: 0} 306 | m_PrefabInstance: {fileID: 0} 307 | m_PrefabAsset: {fileID: 0} 308 | serializedVersion: 6 309 | m_Component: 310 | - component: {fileID: 2059406955} 311 | - component: {fileID: 2059406956} 312 | m_Layer: 0 313 | m_Name: DatabaseOperations 314 | m_TagString: Untagged 315 | m_Icon: {fileID: 0} 316 | m_NavMeshLayer: 0 317 | m_StaticEditorFlags: 0 318 | m_IsActive: 1 319 | --- !u!4 &2059406955 320 | Transform: 321 | m_ObjectHideFlags: 0 322 | m_CorrespondingSourceObject: {fileID: 0} 323 | m_PrefabInstance: {fileID: 0} 324 | m_PrefabAsset: {fileID: 0} 325 | m_GameObject: {fileID: 2059406953} 326 | serializedVersion: 2 327 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 328 | m_LocalPosition: {x: 0, y: 0, z: 0} 329 | m_LocalScale: {x: 1, y: 1, z: 1} 330 | m_ConstrainProportionsScale: 0 331 | m_Children: [] 332 | m_Father: {fileID: 0} 333 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 334 | --- !u!114 &2059406956 335 | MonoBehaviour: 336 | m_ObjectHideFlags: 0 337 | m_CorrespondingSourceObject: {fileID: 0} 338 | m_PrefabInstance: {fileID: 0} 339 | m_PrefabAsset: {fileID: 0} 340 | m_GameObject: {fileID: 2059406953} 341 | m_Enabled: 1 342 | m_EditorHideFlags: 0 343 | m_Script: {fileID: 11500000, guid: 4a99bd01ff8bc694daf6a4d5f768d45f, type: 3} 344 | m_Name: 345 | m_EditorClassIdentifier: 346 | --- !u!1660057539 &9223372036854775807 347 | SceneRoots: 348 | m_ObjectHideFlags: 0 349 | m_Roots: 350 | - {fileID: 761166609} 351 | - {fileID: 1929491533} 352 | - {fileID: 2059406955} 353 | -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/DatabaseOperations.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1f0c17a817500ed4ba41dc8fe82c9c30 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1bc24af8ad6b9644abb43189bce221fd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts/Database.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe1d7be9f3600524c9e416bf0b661994 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts/Database/Model.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ef51ec210f46fa4e8b96bb4cfdf2c48 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts/Database/Model/LevelData.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | public class LevelData 4 | { 5 | [Key] 6 | public int Id { get; set; } 7 | [StringLength(100)] 8 | public string Name { get; set; } 9 | [Range(1, 10)] 10 | public int Difficulty { get; set; } 11 | public string Description { get; set; } 12 | } -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts/Database/Model/LevelData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af15016ac1722344cbd1ddedf7db0b03 -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts/Database/SQLiteContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | public class SQLiteContext : DbContext 4 | { 5 | public DbSet Levels { get; set; } 6 | 7 | public SQLiteContext() : base() { } 8 | public SQLiteContext(DbContextOptions options) : base(options) { } 9 | 10 | protected override void OnModelCreating(ModelBuilder modelBuilder) 11 | { 12 | base.OnModelCreating(modelBuilder); 13 | modelBuilder.Entity(); 14 | 15 | // To define relationships between tables, configure navigation properties and use Fluent API. 16 | // Refer to the official EF Core documentation: https://learn.microsoft.com/en-us/ef/core/modeling/relationships 17 | // To generate code automatically, use the EF Core CLI tools. For example: 18 | // dotnet ef migrations add 19 | // dotnet ef database update 20 | } 21 | } -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts/Database/SQLiteContext.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cf30b228663d5ad468e7a5c48242f3a3 -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts/Database/SQLiteContextFactory.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore; 2 | 3 | public class SQLiteContextFactory : EFCoreSQLiteBundle.SQLiteContextFactory 4 | { 5 | public SQLiteContextFactory() : base(UnityEngine.Application.persistentDataPath, "data.db") 6 | { 7 | // Optional logging 8 | UnityEngine.Debug.Log($"Using database: {DataSource}"); 9 | } 10 | 11 | protected override SQLiteContext InternalCreateDbContext(DbContextOptions optionsBuilder) 12 | { 13 | return new SQLiteContext(optionsBuilder); 14 | } 15 | } -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts/Database/SQLiteContextFactory.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 53af59d4b4ac6d04a9ba87b6744037ca -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts/DatabaseOperations.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using UnityEngine; 3 | 4 | public class DatabaseOperations : MonoBehaviour 5 | { 6 | void Awake() 7 | { 8 | AddLevel("Level 1", 1, "Easy level"); 9 | AddLevel("Level 2", 2, "Medium level"); 10 | AddLevel("Level 3", 3, "Hard level"); 11 | 12 | PrintAllLevels(); 13 | } 14 | 15 | void AddLevel(string name, int difficulty, string description) 16 | { 17 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 18 | { 19 | var level = new LevelData 20 | { 21 | Name = name, 22 | Difficulty = difficulty, 23 | Description = description 24 | }; 25 | dbContext.Levels.Add(level); 26 | dbContext.SaveChanges(); 27 | } 28 | Debug.Log($"Added Level: {name}, Difficulty: {difficulty}"); 29 | } 30 | void PrintAllLevels() 31 | { 32 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 33 | { 34 | var levels = dbContext.Levels.ToList(); 35 | foreach (var level in levels) 36 | Debug.Log($"Level ID: {level.Id}, Name: {level.Name}, Difficulty: {level.Difficulty}"); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Assets/Sample/2. DatabaseOperations/Scripts/DatabaseOperations.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4a99bd01ff8bc694daf6a4d5f768d45f 3 | -------------------------------------------------------------------------------- /Assets/_PackageRoot.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a50fa1dd2a8b6c4cb5964a47ca46a9e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Documentation~/README.md: -------------------------------------------------------------------------------- 1 | # Unity + EFCore + SQLite = ❤️ 2 | 3 | ![npm](https://img.shields.io/npm/v/extensions.unity.bundle.efcore.sqlite) [![openupm](https://img.shields.io/npm/v/extensions.unity.bundle.efcore.sqlite?label=openupm®istry_uri=https://package.openupm.com)](https://openupm.com/packages/extensions.unity.bundle.efcore.sqlite/) ![License](https://img.shields.io/github/license/IvanMurzak/Unity-EFCore-SQLite) [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua) 4 | 5 | Ready to go bundle package that includes references on [EntityFrameworkCore](https://github.com/dotnet/efcore) and [SQLitePCLRaw](https://github.com/ericsink/SQLitePCL.raw) packages that just works in this combination for the next platforms: 6 | 7 | Supports AOT an JIT compilation. For AOT it uses nested `link.xml` file to exclude required classes from stripping. 8 | 9 | ## Supported project settings 10 | 11 | ### Platform 12 | 13 | - ✔️ Windows 14 | - ✔️ Android 15 | - ✔️ iOS 16 | - ✔️ MacOS 17 | - Others not yet tested 18 | 19 | ### Scripting backend 20 | 21 | - ❌ `Mono` 22 | - ✔️ `IL2CPP` 23 | 24 | ### API Compatibility 25 | 26 | - ❌ `.NET Framework` 27 | - ✔️ `.NET Standard 2.0` 28 | - ✔️ `.NET Standard 2.1` 29 | 30 | Then use EFCore as usual. 31 | 32 | # Installation 33 | 34 | - [Install OpenUPM-CLI](https://github.com/openupm/openupm-cli#installation) 35 | - Open command line in Unity project folder 36 | - Run the command 37 | 38 | ``` CLI 39 | openupm add extensions.unity.bundle.efcore.sqlite 40 | ``` 41 | 42 | # Usage 43 | 44 | ## Option 1: Explicit (Recommended) 45 | 46 | Use this approach to setup your database and establish connection. 47 | 48 | ### 1. Create data model `LevelData.cs` 49 | 50 | ```csharp 51 | using System.ComponentModel.DataAnnotations; 52 | 53 | public class LevelData 54 | { 55 | [Key] 56 | public int Id { get; set; } 57 | [StringLength(100)] 58 | public string Name { get; set; } 59 | [Range(1, 10)] 60 | public int Difficulty { get; set; } 61 | public string Description { get; set; } 62 | } 63 | ``` 64 | 65 | ### 2. Create `SQLiteContext.cs` 66 | 67 | ```csharp 68 | using Microsoft.EntityFrameworkCore; 69 | 70 | public class SQLiteContext : DbContext 71 | { 72 | // sample table of levels in your database 73 | public DbSet Levels { get; set; } 74 | 75 | public SQLiteContext() : base() { } 76 | public SQLiteContext(DbContextOptions options) : base(options) { } 77 | 78 | protected override void OnModelCreating(ModelBuilder builder) 79 | { 80 | base.OnModelCreating(builder); 81 | builder.Entity(); 82 | 83 | // To define relationships between tables, configure navigation properties and use Fluent API. 84 | // Refer to the official EF Core documentation: https://learn.microsoft.com/en-us/ef/core/modeling/relationships 85 | // To generate code automatically, use the EF Core CLI tools. For example: 86 | // dotnet ef migrations add 87 | // dotnet ef database update 88 | } 89 | } 90 | ``` 91 | 92 | ### 3. Create `SQLiteContextFactory.cs` 93 | 94 | ```csharp 95 | using Microsoft.EntityFrameworkCore; 96 | 97 | public class SQLiteContextFactory : EFCoreSQLiteBundle.SQLiteContextFactory 98 | { 99 | public SQLiteContextFactory() : base(UnityEngine.Application.persistentDataPath, "data.db") 100 | { 101 | // Optional logging 102 | UnityEngine.Debug.Log($"Using database: {DataSource}"); 103 | } 104 | 105 | protected override SQLiteContext InternalCreateDbContext(DbContextOptions optionsBuilder) 106 | { 107 | return new SQLiteContext(optionsBuilder); 108 | } 109 | } 110 | ``` 111 | 112 | The `EFCoreSQLiteBundle.SQLiteContextFactory` class under the hood executes `SQLitePCLRaw.Startup.Setup();` for proper SQLite setup depends on the current platform. 113 | 114 | ### 4. Create database context 115 | 116 | ```csharp 117 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 118 | { 119 | // use it for data manipulations 120 | // sample: 121 | var level_1 = dbContext.Levels.FirstOrDefault(level => level.Id == 1); 122 | } 123 | ``` 124 | 125 | There is full usage sample in this source code: 126 | 127 | ```csharp 128 | using System.Linq; 129 | using UnityEngine; 130 | 131 | public class DatabaseOperations : MonoBehaviour 132 | { 133 | void Awake() 134 | { 135 | AddLevel("Level 1", 1, "Easy level"); 136 | AddLevel("Level 2", 2, "Medium level"); 137 | AddLevel("Level 3", 3, "Hard level"); 138 | 139 | PrintAllLevels(); 140 | } 141 | 142 | void AddLevel(string name, int difficulty, string description) 143 | { 144 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 145 | { 146 | var level = new LevelData 147 | { 148 | Name = name, 149 | Difficulty = difficulty, 150 | Description = description 151 | }; 152 | dbContext.Levels.Add(level); 153 | dbContext.SaveChanges(); 154 | } 155 | Debug.Log($"Added Level: {name}, Difficulty: {difficulty}"); 156 | } 157 | void PrintAllLevels() 158 | { 159 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 160 | { 161 | var levels = dbContext.Levels.ToList(); 162 | foreach (var level in levels) 163 | Debug.Log($"Level ID: {level.Id}, Name: {level.Name}, Difficulty: {level.Difficulty}"); 164 | } 165 | } 166 | } 167 | ``` 168 | 169 | --- 170 | 171 | ## Option 2: Minimalistic 172 | 173 | Use this option if you well understand how to operate with EFCore on your own. 174 | 175 | Call the function once at app startup. Important to do that before opening SQLite connection. This method call prepares SQLite. 176 | 177 | ```csharp 178 | SQLitePCLRaw.Startup.Setup(); 179 | ``` 180 | 181 | --- 182 | 183 | # Helpful information 184 | 185 | Read more how to use [EntityFrameworkCore](https://learn.microsoft.com/en-us/ef/ef6/get-started?redirectedfrom=MSDN). My favorite approach is `Code First`. 186 | Please keep in mind. Because of Unity's .NET Standard 2.1 restrictions we are only limited to use the old version of EntityFrameworkCore 5.0.17. Newer versions require newer .NET version which Unity doesn't support yet. Anyway the version 5.0.17 is a good one for sure! 187 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d9b7acbdf5041404d90305ecd57a875f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Editor/Gizmos.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d30b992e41131da468ee8ecb21873d97 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Editor/Gizmos/.gitignore: -------------------------------------------------------------------------------- 1 | # Except this file 2 | !.gitignore -------------------------------------------------------------------------------- /Assets/_PackageRoot/Editor/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fd5905a0808abfb4c8f63b89f74014bd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Editor/Scripts/.gitignore: -------------------------------------------------------------------------------- 1 | # Except this file 2 | !.gitignore -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2457f99d957e9974182bac1eb6145acd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 23bdaa2a0f2da99478ea4f70ba457dc4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/arm64-v8a.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0618ff190559d9b48aa6f96f689e2557 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/arm64-v8a/libe_sqlite3.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvanMurzak/Unity-EFCore-SQLite/e9493faf9239d9d3fe25f268d7c59a4d8c49f1be/Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/arm64-v8a/libe_sqlite3.so -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/arm64-v8a/libe_sqlite3.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b97ee9c8b6429964ba57aa0197eb8450 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | : Any 16 | second: 17 | enabled: 0 18 | settings: 19 | Exclude Android: 0 20 | Exclude Editor: 1 21 | Exclude Linux64: 1 22 | Exclude OSXUniversal: 1 23 | Exclude Win: 1 24 | Exclude Win64: 1 25 | Exclude iOS: 1 26 | - first: 27 | Android: Android 28 | second: 29 | enabled: 1 30 | settings: 31 | AndroidSharedLibraryType: Executable 32 | CPU: ARM64 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Standalone: Linux64 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: None 52 | - first: 53 | Standalone: OSXUniversal 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: None 58 | - first: 59 | Standalone: Win 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: None 64 | - first: 65 | Standalone: Win64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: None 70 | - first: 71 | iPhone: iOS 72 | second: 73 | enabled: 0 74 | settings: 75 | AddToEmbeddedBinaries: false 76 | CPU: AnyCPU 77 | CompileFlags: 78 | FrameworkDependencies: 79 | userData: 80 | assetBundleName: 81 | assetBundleVariant: 82 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/armeabi-v7a.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a7716e84f8d4dcb47b8cce991fff685d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/armeabi-v7a/libe_sqlite3.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvanMurzak/Unity-EFCore-SQLite/e9493faf9239d9d3fe25f268d7c59a4d8c49f1be/Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/armeabi-v7a/libe_sqlite3.so -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/armeabi-v7a/libe_sqlite3.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b19927dcd783814db9f3d7da17954da 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | : Any 16 | second: 17 | enabled: 0 18 | settings: 19 | Exclude Android: 0 20 | Exclude Editor: 1 21 | Exclude Linux64: 1 22 | Exclude OSXUniversal: 1 23 | Exclude Win: 1 24 | Exclude Win64: 1 25 | Exclude iOS: 1 26 | - first: 27 | Android: Android 28 | second: 29 | enabled: 1 30 | settings: 31 | AndroidSharedLibraryType: Executable 32 | CPU: ARMv7 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Standalone: Linux64 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: None 52 | - first: 53 | Standalone: OSXUniversal 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: None 58 | - first: 59 | Standalone: Win 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: None 64 | - first: 65 | Standalone: Win64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: None 70 | - first: 71 | iPhone: iOS 72 | second: 73 | enabled: 0 74 | settings: 75 | AddToEmbeddedBinaries: false 76 | CPU: AnyCPU 77 | CompileFlags: 78 | FrameworkDependencies: 79 | userData: 80 | assetBundleName: 81 | assetBundleVariant: 82 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/x86.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4237d98fa41cc7e4fa0bfaa2415958b6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/x86/libe_sqlite3.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvanMurzak/Unity-EFCore-SQLite/e9493faf9239d9d3fe25f268d7c59a4d8c49f1be/Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/x86/libe_sqlite3.so -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/x86/libe_sqlite3.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e48991d51bf98b44cab14b88afbd28be 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | : Any 16 | second: 17 | enabled: 0 18 | settings: 19 | Exclude Android: 0 20 | Exclude Editor: 1 21 | Exclude Linux64: 1 22 | Exclude OSXUniversal: 1 23 | Exclude Win: 1 24 | Exclude Win64: 1 25 | Exclude iOS: 1 26 | - first: 27 | Android: Android 28 | second: 29 | enabled: 1 30 | settings: 31 | AndroidSharedLibraryType: Executable 32 | CPU: X86 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Standalone: Linux64 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: None 52 | - first: 53 | Standalone: OSXUniversal 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: None 58 | - first: 59 | Standalone: Win 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: None 64 | - first: 65 | Standalone: Win64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: None 70 | - first: 71 | iPhone: iOS 72 | second: 73 | enabled: 0 74 | settings: 75 | AddToEmbeddedBinaries: false 76 | CPU: AnyCPU 77 | CompileFlags: 78 | FrameworkDependencies: 79 | userData: 80 | assetBundleName: 81 | assetBundleVariant: 82 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/x86_64.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f534cc22040fa8d449430fe285069407 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/x86_64/libe_sqlite3.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvanMurzak/Unity-EFCore-SQLite/e9493faf9239d9d3fe25f268d7c59a4d8c49f1be/Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/x86_64/libe_sqlite3.so -------------------------------------------------------------------------------- /Assets/_PackageRoot/Plugins/SQLitePCLRaw.lib.e_sqlite3.android.2.1.10/x86_64/libe_sqlite3.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 03a038bd83f248b4e8e32c0072d9b43f 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | : Any 16 | second: 17 | enabled: 0 18 | settings: 19 | Exclude Android: 0 20 | Exclude Editor: 1 21 | Exclude Linux64: 1 22 | Exclude OSXUniversal: 1 23 | Exclude Win: 1 24 | Exclude Win64: 1 25 | Exclude iOS: 1 26 | - first: 27 | Android: Android 28 | second: 29 | enabled: 1 30 | settings: 31 | AndroidSharedLibraryType: Executable 32 | CPU: X86_64 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | CPU: AnyCPU 44 | DefaultValueInitialized: true 45 | OS: AnyOS 46 | - first: 47 | Standalone: Linux64 48 | second: 49 | enabled: 0 50 | settings: 51 | CPU: None 52 | - first: 53 | Standalone: OSXUniversal 54 | second: 55 | enabled: 0 56 | settings: 57 | CPU: None 58 | - first: 59 | Standalone: Win 60 | second: 61 | enabled: 0 62 | settings: 63 | CPU: None 64 | - first: 65 | Standalone: Win64 66 | second: 67 | enabled: 0 68 | settings: 69 | CPU: None 70 | - first: 71 | iPhone: iOS 72 | second: 73 | enabled: 0 74 | settings: 75 | AddToEmbeddedBinaries: false 76 | CPU: AnyCPU 77 | CompileFlags: 78 | FrameworkDependencies: 79 | userData: 80 | assetBundleName: 81 | assetBundleVariant: 82 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/README.md: -------------------------------------------------------------------------------- 1 | # Unity + EFCore + SQLite = ❤️ 2 | 3 | ![npm](https://img.shields.io/npm/v/extensions.unity.bundle.efcore.sqlite) [![openupm](https://img.shields.io/npm/v/extensions.unity.bundle.efcore.sqlite?label=openupm®istry_uri=https://package.openupm.com)](https://openupm.com/packages/extensions.unity.bundle.efcore.sqlite/) ![License](https://img.shields.io/github/license/IvanMurzak/Unity-EFCore-SQLite) [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua) 4 | 5 | Ready to go bundle package that includes references on [EntityFrameworkCore](https://github.com/dotnet/efcore) and [SQLitePCLRaw](https://github.com/ericsink/SQLitePCL.raw) packages that just works in this combination for the next platforms: 6 | 7 | Supports AOT an JIT compilation. For AOT it uses nested `link.xml` file to exclude required classes from stripping. 8 | 9 | ## Supported project settings 10 | 11 | ### Platform 12 | 13 | - ✔️ Windows 14 | - ✔️ Android 15 | - ✔️ iOS 16 | - ✔️ MacOS 17 | - Others not yet tested 18 | 19 | ### Scripting backend 20 | 21 | - ❌ `Mono` 22 | - ✔️ `IL2CPP` 23 | 24 | ### API Compatibility 25 | 26 | - ❌ `.NET Framework` 27 | - ✔️ `.NET Standard 2.0` 28 | - ✔️ `.NET Standard 2.1` 29 | 30 | Then use EFCore as usual. 31 | 32 | # Installation 33 | 34 | - [Install OpenUPM-CLI](https://github.com/openupm/openupm-cli#installation) 35 | - Open command line in Unity project folder 36 | - Run the command 37 | 38 | ``` CLI 39 | openupm add extensions.unity.bundle.efcore.sqlite 40 | ``` 41 | 42 | # Usage 43 | 44 | ## Option 1: Explicit (Recommended) 45 | 46 | Use this approach to setup your database and establish connection. 47 | 48 | ### 1. Create data model `LevelData.cs` 49 | 50 | ```csharp 51 | using System.ComponentModel.DataAnnotations; 52 | 53 | public class LevelData 54 | { 55 | [Key] 56 | public int Id { get; set; } 57 | [StringLength(100)] 58 | public string Name { get; set; } 59 | [Range(1, 10)] 60 | public int Difficulty { get; set; } 61 | public string Description { get; set; } 62 | } 63 | ``` 64 | 65 | ### 2. Create `SQLiteContext.cs` 66 | 67 | ```csharp 68 | using Microsoft.EntityFrameworkCore; 69 | 70 | public class SQLiteContext : DbContext 71 | { 72 | // sample table of levels in your database 73 | public DbSet Levels { get; set; } 74 | 75 | public SQLiteContext() : base() { } 76 | public SQLiteContext(DbContextOptions options) : base(options) { } 77 | 78 | protected override void OnModelCreating(ModelBuilder builder) 79 | { 80 | base.OnModelCreating(builder); 81 | builder.Entity(); 82 | 83 | // To define relationships between tables, configure navigation properties and use Fluent API. 84 | // Refer to the official EF Core documentation: https://learn.microsoft.com/en-us/ef/core/modeling/relationships 85 | // To generate code automatically, use the EF Core CLI tools. For example: 86 | // dotnet ef migrations add 87 | // dotnet ef database update 88 | } 89 | } 90 | ``` 91 | 92 | ### 3. Create `SQLiteContextFactory.cs` 93 | 94 | ```csharp 95 | using Microsoft.EntityFrameworkCore; 96 | 97 | public class SQLiteContextFactory : EFCoreSQLiteBundle.SQLiteContextFactory 98 | { 99 | public SQLiteContextFactory() : base(UnityEngine.Application.persistentDataPath, "data.db") 100 | { 101 | // Optional logging 102 | UnityEngine.Debug.Log($"Using database: {DataSource}"); 103 | } 104 | 105 | protected override SQLiteContext InternalCreateDbContext(DbContextOptions optionsBuilder) 106 | { 107 | return new SQLiteContext(optionsBuilder); 108 | } 109 | } 110 | ``` 111 | 112 | The `EFCoreSQLiteBundle.SQLiteContextFactory` class under the hood executes `SQLitePCLRaw.Startup.Setup();` for proper SQLite setup depends on the current platform. 113 | 114 | ### 4. Create database context 115 | 116 | ```csharp 117 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 118 | { 119 | // use it for data manipulations 120 | // sample: 121 | var level_1 = dbContext.Levels.FirstOrDefault(level => level.Id == 1); 122 | } 123 | ``` 124 | 125 | There is full usage sample in this source code: 126 | 127 | ```csharp 128 | using System.Linq; 129 | using UnityEngine; 130 | 131 | public class DatabaseOperations : MonoBehaviour 132 | { 133 | void Awake() 134 | { 135 | AddLevel("Level 1", 1, "Easy level"); 136 | AddLevel("Level 2", 2, "Medium level"); 137 | AddLevel("Level 3", 3, "Hard level"); 138 | 139 | PrintAllLevels(); 140 | } 141 | 142 | void AddLevel(string name, int difficulty, string description) 143 | { 144 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 145 | { 146 | var level = new LevelData 147 | { 148 | Name = name, 149 | Difficulty = difficulty, 150 | Description = description 151 | }; 152 | dbContext.Levels.Add(level); 153 | dbContext.SaveChanges(); 154 | } 155 | Debug.Log($"Added Level: {name}, Difficulty: {difficulty}"); 156 | } 157 | void PrintAllLevels() 158 | { 159 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 160 | { 161 | var levels = dbContext.Levels.ToList(); 162 | foreach (var level in levels) 163 | Debug.Log($"Level ID: {level.Id}, Name: {level.Name}, Difficulty: {level.Difficulty}"); 164 | } 165 | } 166 | } 167 | ``` 168 | 169 | --- 170 | 171 | ## Option 2: Minimalistic 172 | 173 | Use this option if you well understand how to operate with EFCore on your own. 174 | 175 | Call the function once at app startup. Important to do that before opening SQLite connection. This method call prepares SQLite. 176 | 177 | ```csharp 178 | SQLitePCLRaw.Startup.Setup(); 179 | ``` 180 | 181 | --- 182 | 183 | # Helpful information 184 | 185 | Read more how to use [EntityFrameworkCore](https://learn.microsoft.com/en-us/ef/ef6/get-started?redirectedfrom=MSDN). My favorite approach is `Code First`. 186 | Please keep in mind. Because of Unity's .NET Standard 2.1 restrictions we are only limited to use the old version of EntityFrameworkCore 5.0.17. Newer versions require newer .NET version which Unity doesn't support yet. Anyway the version 5.0.17 is a good one for sure! 187 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 131289ab539d3b64ba5c9754c849e604 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7d68b1a1929aefc469fa587406e9cd8a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Runtime/.gitignore: -------------------------------------------------------------------------------- 1 | # Except this file 2 | !.gitignore -------------------------------------------------------------------------------- /Assets/_PackageRoot/Runtime/EFCore.SQLite.Bundle.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "EFCore.SQLite.Bundle", 3 | "rootNamespace": "EFCoreSQLiteBundle", 4 | "references": [], 5 | "includePlatforms": [], 6 | "excludePlatforms": [], 7 | "allowUnsafeCode": false, 8 | "overrideReferences": true, 9 | "precompiledReferences": [ 10 | "Castle.Core.dll", 11 | "Microsoft.EntityFrameworkCore.dll", 12 | "Microsoft.EntityFrameworkCore.Abstractions.dll", 13 | "Microsoft.EntityFrameworkCore.Relational.dll", 14 | "Microsoft.EntityFrameworkCore.Sqlite.dll", 15 | "SQLitePCLRaw.batteries_v2.dll", 16 | "SQLitePCLRaw.core.dll", 17 | "SQLitePCLRaw.provider.e_sqlite3.dll", 18 | "SQLitePCLRaw.provider.sqlite3.dll" 19 | ], 20 | "autoReferenced": true, 21 | "defineConstraints": [], 22 | "versionDefines": [], 23 | "noEngineReferences": false 24 | } -------------------------------------------------------------------------------- /Assets/_PackageRoot/Runtime/EFCore.SQLite.Bundle.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d6413c40b8993734ebf9976e2b57a508 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Runtime/SQLiteContextFactory.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using Microsoft.EntityFrameworkCore; 3 | using Microsoft.EntityFrameworkCore.Design; 4 | 5 | namespace EFCoreSQLiteBundle 6 | { 7 | public abstract class SQLiteContextFactory : IDbContextFactory, IDesignTimeDbContextFactory where T : DbContext 8 | { 9 | /// 10 | /// The "design time" is only needed in the case if you would like to use the EF Core tools 11 | /// for creating, migrating or updating the database schema. 12 | /// If you don't need to use the EF Core tools, you can return null here. 13 | /// 14 | /// Provide the connection string for design time usage. 15 | /// It should be something like "Data Source=database.db" 16 | /// 17 | protected virtual string DesignTimeDataSource => DataSource; 18 | protected virtual string DataSource { get; set; } 19 | 20 | private readonly string _databasePath; 21 | 22 | /// 23 | /// Default constructor needed for Design Time. 24 | /// Don't use it in runtime. 25 | /// 26 | public SQLiteContextFactory() 27 | { 28 | SQLitePCLRaw.Startup.Setup(); 29 | } 30 | public SQLiteContextFactory(string path, string filename) 31 | { 32 | _databasePath = path; 33 | DataSource = BuildSource(path, filename); 34 | EnsureDatabaseFolderExists(); 35 | 36 | SQLitePCLRaw.Startup.Setup(); 37 | } 38 | private void EnsureDatabaseFolderExists() 39 | { 40 | if (!Directory.Exists(_databasePath)) 41 | Directory.CreateDirectory(_databasePath); 42 | } 43 | 44 | /// 45 | /// This method is used to build the full path to the database file. 46 | /// You can override it to change the way the path is built. 47 | /// 48 | protected virtual string BuildSource(string path, string filename) 49 | { 50 | return $"Data Source=" + Path.GetFullPath(Path.Combine(path, filename)); 51 | } 52 | 53 | protected abstract T InternalCreateDbContext(DbContextOptions optionsBuilder); 54 | 55 | /// 56 | /// This method is called when the DbContext is created. 57 | /// You can override it to configure the DbContext options. 58 | /// 59 | protected virtual void OnConfiguring(DbContextOptionsBuilder optionsBuilder, string dataSource) 60 | { 61 | // This is the default connection string for SQLite 62 | optionsBuilder.UseSqlite(dataSource); 63 | } 64 | 65 | /// 66 | /// This method is called when the DbContext is created. 67 | /// You can override it to configure the DbContext options. 68 | /// 69 | protected virtual void OnConfiguring(T dbContext) 70 | { 71 | // Create the database if it doesn't exist 72 | // and apply any pending migrations to the database 73 | dbContext.Database.EnsureCreated(); 74 | dbContext.Database.Migrate(); 75 | } 76 | 77 | /// 78 | /// This method is called when the DbContext is created. 79 | /// You can override it to configure the DbContext options. 80 | /// 81 | public T CreateDbContext() 82 | { 83 | EnsureDatabaseFolderExists(); 84 | 85 | var optionsBuilder = new DbContextOptionsBuilder(); 86 | OnConfiguring(optionsBuilder, DataSource); 87 | 88 | var dbContext = InternalCreateDbContext(optionsBuilder.Options); 89 | OnConfiguring(dbContext); 90 | 91 | return dbContext; 92 | } 93 | 94 | /// 95 | /// !!! DO NOT USE THIS METHOD IN RUNTIME !!! 96 | /// This method is called when the DbContext is created during DESIGN TIME (code first approach). 97 | /// You can override it to configure the DbContext options. 98 | /// 99 | T IDesignTimeDbContextFactory.CreateDbContext(string[] args) 100 | { 101 | var optionsBuilder = new DbContextOptionsBuilder(); 102 | OnConfiguring(optionsBuilder, DesignTimeDataSource); 103 | 104 | return InternalCreateDbContext(optionsBuilder.Options); 105 | } 106 | } 107 | } -------------------------------------------------------------------------------- /Assets/_PackageRoot/Runtime/SQLiteContextFactory.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a6e3b55dc819cbe4ab94bfe04bdeeaf5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Runtime/Startup.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace SQLitePCLRaw 3 | { 4 | public static class Startup 5 | { 6 | private static bool isInitialized = false; 7 | 8 | public static void Setup() 9 | { 10 | if (isInitialized) 11 | return; 12 | 13 | #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN // ---- Windows 14 | SQLitePCL.Batteries_V2.Init(); 15 | #elif UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX // -- MacOS 16 | SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_sqlite3()); 17 | #elif UNITY_ANDROID // ----------------------------- Android 18 | SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_e_sqlite3()); 19 | #elif UNITY_IOS // --------------------------------- iOS 20 | SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_sqlite3()); 21 | #else 22 | SQLitePCL.Batteries_V2.Init(); 23 | #endif 24 | isInitialized = true; 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Assets/_PackageRoot/Runtime/Startup.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d18d43e86c5228647b34742cace30b24 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Runtime/link.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Runtime/link.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a804ee7a687f9834ebbbe89f78715b06 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Tests.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5951ae88c791933419f574343462da58 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Tests/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dfd735d54689633419ea638d976e16ae 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Tests/Editor/.gitignore: -------------------------------------------------------------------------------- 1 | # Except this file 2 | !.gitignore -------------------------------------------------------------------------------- /Assets/_PackageRoot/Tests/Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e0c1250af83312b4cba85917d66837ed 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/_PackageRoot/Tests/Runtime/.gitignore: -------------------------------------------------------------------------------- 1 | # Except this file 2 | !.gitignore -------------------------------------------------------------------------------- /Assets/_PackageRoot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extensions.unity.bundle.efcore.sqlite", 3 | "displayName": "EntityFrameworkCore + SQLite bundle", 4 | "author": { 5 | "name": "Ivan Murzak", 6 | "email": "ivan.d.murzak@gmail.com", 7 | "url": "https://github.com/IvanMurzak" 8 | }, 9 | "version": "0.1.1", 10 | "unity": "2019.2", 11 | "description": "Bundle project that includes references on EntityFrameworkCore and SQLite set of packages to provide ready to go solution for Windows, MacOS, Android, iOS platforms.", 12 | "keywords": [ 13 | "entityframework", 14 | "entityframeworkcore", 15 | "efcore", 16 | "sqlite", 17 | "database", 18 | "storage" 19 | ], 20 | "homepage": "https://github.com/IvanMurzak/Unity-EFCore-SQLite", 21 | "bugs": { 22 | "url": "https://github.com/IvanMurzak/Unity-EFCore-SQLite/issues" 23 | }, 24 | "dependencies": { 25 | "org.nuget.castle.core": "5.1.1", 26 | "org.nuget.microsoft.entityframeworkcore": "5.0.17", 27 | "org.nuget.microsoft.entityframeworkcore.abstractions": "5.0.17", 28 | "org.nuget.microsoft.entityframeworkcore.analyzers": "5.0.17", 29 | "org.nuget.microsoft.entityframeworkcore.relational": "5.0.17", 30 | "org.nuget.microsoft.entityframeworkcore.sqlite.core": "5.0.17", 31 | "org.nuget.sqlitepclraw.bundle_e_sqlite3": "2.1.10", 32 | "org.nuget.sqlitepclraw.provider.sqlite3": "2.1.10" 33 | }, 34 | "scopedRegistries": [ 35 | { 36 | "name": "UnityNuGet", 37 | "url": "https://unitynuget-registry.openupm.com/", 38 | "scopes": [ 39 | "org.nuget.castle.core", 40 | "org.nuget.microsoft.entityframeworkcore", 41 | "org.nuget.microsoft.entityframeworkcore.abstractions", 42 | "org.nuget.microsoft.entityframeworkcore.analyzers", 43 | "org.nuget.microsoft.entityframeworkcore.relational", 44 | "org.nuget.microsoft.entityframeworkcore.sqlite.core", 45 | "org.nuget.sqlitepclraw.bundle_e_sqlite3", 46 | "org.nuget.sqlitepclraw.provider.sqlite3" 47 | ] 48 | } 49 | ] 50 | } -------------------------------------------------------------------------------- /Assets/_PackageRoot/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 607fc76daa1ce6649b073a816f4bd3de 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Commands/NPM--AddUser.bat: -------------------------------------------------------------------------------- 1 | cd ..\Assets\_PackageRoot 2 | npm adduser -------------------------------------------------------------------------------- /Commands/NPM--CopyREADME.bat: -------------------------------------------------------------------------------- 1 | xcopy ..\README.md ..\Assets\_PackageRoot\README.md* /Y 2 | xcopy ..\README.md ..\Assets\_PackageRoot\Documentation~\README.md* /Y -------------------------------------------------------------------------------- /Commands/NPM--UpdateDependencies.bat: -------------------------------------------------------------------------------- 1 | call npm --prefix ..\Assets\_PackageRoot update 2 | del /f ..\Assets\_PackageRoot\package-lock.* 3 | pause -------------------------------------------------------------------------------- /Commands/NPM--VersionMajor.bat: -------------------------------------------------------------------------------- 1 | cd ..\Assets\_PackageRoot 2 | npm version major 3 | pause -------------------------------------------------------------------------------- /Commands/NPM--VersionMinor.bat: -------------------------------------------------------------------------------- 1 | cd ..\Assets\_PackageRoot 2 | npm version minor 3 | pause -------------------------------------------------------------------------------- /Commands/NPM--VersionPatch.bat: -------------------------------------------------------------------------------- 1 | cd ..\Assets\_PackageRoot 2 | npm version patch 3 | pause -------------------------------------------------------------------------------- /Commands/[!!!]--GitHub--Release.bat: -------------------------------------------------------------------------------- 1 | cd ..\Assets\_PackageRoot 2 | @echo off 3 | echo ---------------------------------------------------- 4 | echo Executing "npm pkg get version" 5 | FOR /F "tokens=* USEBACKQ" %%F IN (`npm pkg get version`) DO ( 6 | SET RawVersion=%%F 7 | ) 8 | echo Version of current package is extracted: %RawVersion% 9 | SET CleanVersion=%RawVersion:~1,-1% 10 | echo Current version: %CleanVersion% 11 | 12 | git push -u origin HEAD 13 | 14 | echo ---------------------------------------------------- 15 | cd ..\..\ 16 | echo Creating GitHub release with tag=%CleanVersion% 17 | @echo on 18 | gh release create %CleanVersion% --generate-notes --title %CleanVersion% 19 | gh release view %CleanVersion% --web 20 | @echo off 21 | echo ---------------------------------------------------- 22 | 23 | pause 24 | -------------------------------------------------------------------------------- /Commands/[!!!]--NPM--Publish.bat: -------------------------------------------------------------------------------- 1 | xcopy ..\README.md ..\Assets\_PackageRoot\README.md* /Y 2 | xcopy ..\README.md ..\Assets\_PackageRoot\Documentation~\README.md* /Y 3 | cd ..\Assets\_PackageRoot 4 | npm publish 5 | pause -------------------------------------------------------------------------------- /Commands/[!]--GitHub--DraftRelease.bat: -------------------------------------------------------------------------------- 1 | cd ..\Assets\_PackageRoot 2 | @echo off 3 | echo ---------------------------------------------------- 4 | echo Executing "npm pkg get version" 5 | FOR /F "tokens=* USEBACKQ" %%F IN (`npm pkg get version`) DO ( 6 | SET RawVersion=%%F 7 | ) 8 | echo Version of current package is extracted: %RawVersion% 9 | SET CleanVersion=%RawVersion:~1,-1% 10 | echo Current version: %CleanVersion% 11 | 12 | git push -u origin HEAD 13 | 14 | echo ---------------------------------------------------- 15 | cd ..\..\ 16 | echo Creating GitHub release with tag=%CleanVersion% 17 | @echo on 18 | gh release create %CleanVersion% --draft --generate-notes --title %CleanVersion% 19 | gh repo view --web 20 | @echo off 21 | echo ---------------------------------------------------- 22 | 23 | pause 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Ivan Murzak 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 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ide.visualstudio": "2.0.23", 4 | "org.nuget.castle.core": "5.1.1", 5 | "org.nuget.microsoft.entityframeworkcore": "5.0.17", 6 | "org.nuget.microsoft.entityframeworkcore.abstractions": "5.0.17", 7 | "org.nuget.microsoft.entityframeworkcore.analyzers": "5.0.17", 8 | "org.nuget.microsoft.entityframeworkcore.relational": "5.0.17", 9 | "org.nuget.microsoft.entityframeworkcore.sqlite.core": "5.0.17", 10 | "org.nuget.sqlitepclraw.bundle_e_sqlite3": "2.1.10", 11 | "org.nuget.sqlitepclraw.provider.sqlite3": "2.1.10", 12 | "com.unity.modules.androidjni": "1.0.0", 13 | "com.unity.modules.imageconversion": "1.0.0", 14 | "com.unity.modules.imgui": "1.0.0", 15 | "com.unity.modules.jsonserialize": "1.0.0", 16 | "com.unity.modules.ui": "1.0.0", 17 | "com.unity.modules.uielements": "1.0.0" 18 | }, 19 | "scopedRegistries": [ 20 | { 21 | "name": "UnityNuGet", 22 | "url": "https://unitynuget-registry.openupm.com/", 23 | "scopes": [ 24 | "org.nuget" 25 | ] 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ext.nunit": { 4 | "version": "2.0.5", 5 | "depth": 2, 6 | "source": "builtin", 7 | "dependencies": {} 8 | }, 9 | "com.unity.ide.visualstudio": { 10 | "version": "2.0.23", 11 | "depth": 0, 12 | "source": "registry", 13 | "dependencies": { 14 | "com.unity.test-framework": "1.1.9" 15 | }, 16 | "url": "https://packages.unity.com" 17 | }, 18 | "com.unity.test-framework": { 19 | "version": "1.5.1", 20 | "depth": 1, 21 | "source": "builtin", 22 | "dependencies": { 23 | "com.unity.ext.nunit": "2.0.3", 24 | "com.unity.modules.imgui": "1.0.0", 25 | "com.unity.modules.jsonserialize": "1.0.0" 26 | } 27 | }, 28 | "org.nuget.castle.core": { 29 | "version": "5.1.1", 30 | "depth": 0, 31 | "source": "registry", 32 | "dependencies": { 33 | "org.nuget.system.diagnostics.eventlog": "4.7.0", 34 | "org.nuget.system.reflection.emit": "4.7.0" 35 | }, 36 | "url": "https://unitynuget-registry.openupm.com" 37 | }, 38 | "org.nuget.microsoft.bcl.asyncinterfaces": { 39 | "version": "5.0.0", 40 | "depth": 2, 41 | "source": "registry", 42 | "dependencies": { 43 | "org.nuget.system.threading.tasks.extensions": "4.5.4" 44 | }, 45 | "url": "https://unitynuget-registry.openupm.com" 46 | }, 47 | "org.nuget.microsoft.data.sqlite.core": { 48 | "version": "5.0.17", 49 | "depth": 1, 50 | "source": "registry", 51 | "dependencies": { 52 | "org.nuget.sqlitepclraw.core": "2.0.4" 53 | }, 54 | "url": "https://unitynuget-registry.openupm.com" 55 | }, 56 | "org.nuget.microsoft.dotnet.platformabstractions": { 57 | "version": "3.1.6", 58 | "depth": 1, 59 | "source": "registry", 60 | "dependencies": {}, 61 | "url": "https://unitynuget-registry.openupm.com" 62 | }, 63 | "org.nuget.microsoft.entityframeworkcore": { 64 | "version": "5.0.17", 65 | "depth": 0, 66 | "source": "registry", 67 | "dependencies": { 68 | "org.nuget.microsoft.extensions.caching.memory": "5.0.0", 69 | "org.nuget.microsoft.extensions.dependencyinjection": "5.0.2", 70 | "org.nuget.microsoft.extensions.logging": "5.0.0", 71 | "org.nuget.system.collections.immutable": "5.0.0", 72 | "org.nuget.system.componentmodel.annotations": "5.0.0", 73 | "org.nuget.system.diagnostics.diagnosticsource": "5.0.1" 74 | }, 75 | "url": "https://unitynuget-registry.openupm.com" 76 | }, 77 | "org.nuget.microsoft.entityframeworkcore.abstractions": { 78 | "version": "5.0.17", 79 | "depth": 0, 80 | "source": "registry", 81 | "dependencies": {}, 82 | "url": "https://unitynuget-registry.openupm.com" 83 | }, 84 | "org.nuget.microsoft.entityframeworkcore.analyzers": { 85 | "version": "5.0.17", 86 | "depth": 0, 87 | "source": "registry", 88 | "dependencies": {}, 89 | "url": "https://unitynuget-registry.openupm.com" 90 | }, 91 | "org.nuget.microsoft.entityframeworkcore.relational": { 92 | "version": "5.0.17", 93 | "depth": 0, 94 | "source": "registry", 95 | "dependencies": { 96 | "org.nuget.microsoft.extensions.configuration.abstractions": "5.0.0" 97 | }, 98 | "url": "https://unitynuget-registry.openupm.com" 99 | }, 100 | "org.nuget.microsoft.entityframeworkcore.sqlite.core": { 101 | "version": "5.0.17", 102 | "depth": 0, 103 | "source": "registry", 104 | "dependencies": { 105 | "org.nuget.microsoft.data.sqlite.core": "5.0.17", 106 | "org.nuget.microsoft.dotnet.platformabstractions": "3.1.6", 107 | "org.nuget.microsoft.extensions.dependencymodel": "5.0.0" 108 | }, 109 | "url": "https://unitynuget-registry.openupm.com" 110 | }, 111 | "org.nuget.microsoft.extensions.caching.abstractions": { 112 | "version": "5.0.0", 113 | "depth": 2, 114 | "source": "registry", 115 | "dependencies": { 116 | "org.nuget.microsoft.extensions.primitives": "5.0.0" 117 | }, 118 | "url": "https://unitynuget-registry.openupm.com" 119 | }, 120 | "org.nuget.microsoft.extensions.caching.memory": { 121 | "version": "5.0.0", 122 | "depth": 1, 123 | "source": "registry", 124 | "dependencies": { 125 | "org.nuget.microsoft.extensions.caching.abstractions": "5.0.0", 126 | "org.nuget.microsoft.extensions.dependencyinjection.abstractions": "5.0.0", 127 | "org.nuget.microsoft.extensions.logging.abstractions": "5.0.0", 128 | "org.nuget.microsoft.extensions.options": "5.0.0", 129 | "org.nuget.microsoft.extensions.primitives": "5.0.0" 130 | }, 131 | "url": "https://unitynuget-registry.openupm.com" 132 | }, 133 | "org.nuget.microsoft.extensions.configuration.abstractions": { 134 | "version": "5.0.0", 135 | "depth": 1, 136 | "source": "registry", 137 | "dependencies": { 138 | "org.nuget.microsoft.extensions.primitives": "5.0.0" 139 | }, 140 | "url": "https://unitynuget-registry.openupm.com" 141 | }, 142 | "org.nuget.microsoft.extensions.dependencyinjection": { 143 | "version": "5.0.2", 144 | "depth": 1, 145 | "source": "registry", 146 | "dependencies": { 147 | "org.nuget.microsoft.bcl.asyncinterfaces": "5.0.0", 148 | "org.nuget.microsoft.extensions.dependencyinjection.abstractions": "5.0.0", 149 | "org.nuget.system.threading.tasks.extensions": "4.5.4" 150 | }, 151 | "url": "https://unitynuget-registry.openupm.com" 152 | }, 153 | "org.nuget.microsoft.extensions.dependencyinjection.abstractions": { 154 | "version": "5.0.0", 155 | "depth": 2, 156 | "source": "registry", 157 | "dependencies": {}, 158 | "url": "https://unitynuget-registry.openupm.com" 159 | }, 160 | "org.nuget.microsoft.extensions.dependencymodel": { 161 | "version": "5.0.0", 162 | "depth": 1, 163 | "source": "registry", 164 | "dependencies": { 165 | "org.nuget.system.buffers": "4.5.1", 166 | "org.nuget.system.memory": "4.5.4", 167 | "org.nuget.system.text.encodings.web": "5.0.0", 168 | "org.nuget.system.text.json": "5.0.0" 169 | }, 170 | "url": "https://unitynuget-registry.openupm.com" 171 | }, 172 | "org.nuget.microsoft.extensions.logging": { 173 | "version": "5.0.0", 174 | "depth": 1, 175 | "source": "registry", 176 | "dependencies": { 177 | "org.nuget.microsoft.extensions.dependencyinjection": "5.0.0", 178 | "org.nuget.microsoft.extensions.dependencyinjection.abstractions": "5.0.0", 179 | "org.nuget.microsoft.extensions.logging.abstractions": "5.0.0", 180 | "org.nuget.microsoft.extensions.options": "5.0.0", 181 | "org.nuget.system.diagnostics.diagnosticsource": "5.0.0" 182 | }, 183 | "url": "https://unitynuget-registry.openupm.com" 184 | }, 185 | "org.nuget.microsoft.extensions.logging.abstractions": { 186 | "version": "5.0.0", 187 | "depth": 2, 188 | "source": "registry", 189 | "dependencies": {}, 190 | "url": "https://unitynuget-registry.openupm.com" 191 | }, 192 | "org.nuget.microsoft.extensions.options": { 193 | "version": "5.0.0", 194 | "depth": 2, 195 | "source": "registry", 196 | "dependencies": { 197 | "org.nuget.microsoft.extensions.dependencyinjection.abstractions": "5.0.0", 198 | "org.nuget.microsoft.extensions.primitives": "5.0.0" 199 | }, 200 | "url": "https://unitynuget-registry.openupm.com" 201 | }, 202 | "org.nuget.microsoft.extensions.primitives": { 203 | "version": "5.0.0", 204 | "depth": 2, 205 | "source": "registry", 206 | "dependencies": { 207 | "org.nuget.system.buffers": "4.5.1", 208 | "org.nuget.system.memory": "4.5.4", 209 | "org.nuget.system.runtime.compilerservices.unsafe": "5.0.0" 210 | }, 211 | "url": "https://unitynuget-registry.openupm.com" 212 | }, 213 | "org.nuget.sqlitepclraw.bundle_e_sqlite3": { 214 | "version": "2.1.10", 215 | "depth": 0, 216 | "source": "registry", 217 | "dependencies": { 218 | "org.nuget.sqlitepclraw.provider.e_sqlite3": "2.1.10", 219 | "org.nuget.sqlitepclraw.lib.e_sqlite3": "2.1.10" 220 | }, 221 | "url": "https://unitynuget-registry.openupm.com" 222 | }, 223 | "org.nuget.sqlitepclraw.core": { 224 | "version": "2.1.10", 225 | "depth": 1, 226 | "source": "registry", 227 | "dependencies": { 228 | "org.nuget.system.memory": "4.5.3" 229 | }, 230 | "url": "https://unitynuget-registry.openupm.com" 231 | }, 232 | "org.nuget.sqlitepclraw.lib.e_sqlite3": { 233 | "version": "2.1.10", 234 | "depth": 1, 235 | "source": "registry", 236 | "dependencies": {}, 237 | "url": "https://unitynuget-registry.openupm.com" 238 | }, 239 | "org.nuget.sqlitepclraw.provider.e_sqlite3": { 240 | "version": "2.1.10", 241 | "depth": 1, 242 | "source": "registry", 243 | "dependencies": { 244 | "org.nuget.sqlitepclraw.core": "2.1.10" 245 | }, 246 | "url": "https://unitynuget-registry.openupm.com" 247 | }, 248 | "org.nuget.sqlitepclraw.provider.sqlite3": { 249 | "version": "2.1.10", 250 | "depth": 0, 251 | "source": "registry", 252 | "dependencies": { 253 | "org.nuget.sqlitepclraw.core": "2.1.10" 254 | }, 255 | "url": "https://unitynuget-registry.openupm.com" 256 | }, 257 | "org.nuget.system.buffers": { 258 | "version": "4.5.1", 259 | "depth": 2, 260 | "source": "registry", 261 | "dependencies": {}, 262 | "url": "https://unitynuget-registry.openupm.com" 263 | }, 264 | "org.nuget.system.collections.immutable": { 265 | "version": "5.0.0", 266 | "depth": 1, 267 | "source": "registry", 268 | "dependencies": { 269 | "org.nuget.system.memory": "4.5.4" 270 | }, 271 | "url": "https://unitynuget-registry.openupm.com" 272 | }, 273 | "org.nuget.system.componentmodel.annotations": { 274 | "version": "5.0.0", 275 | "depth": 1, 276 | "source": "registry", 277 | "dependencies": {}, 278 | "url": "https://unitynuget-registry.openupm.com" 279 | }, 280 | "org.nuget.system.diagnostics.diagnosticsource": { 281 | "version": "5.0.1", 282 | "depth": 1, 283 | "source": "registry", 284 | "dependencies": { 285 | "org.nuget.system.memory": "4.5.4", 286 | "org.nuget.system.runtime.compilerservices.unsafe": "5.0.0" 287 | }, 288 | "url": "https://unitynuget-registry.openupm.com" 289 | }, 290 | "org.nuget.system.diagnostics.eventlog": { 291 | "version": "4.7.0", 292 | "depth": 1, 293 | "source": "registry", 294 | "dependencies": { 295 | "org.nuget.system.security.principal.windows": "4.7.0" 296 | }, 297 | "url": "https://unitynuget-registry.openupm.com" 298 | }, 299 | "org.nuget.system.memory": { 300 | "version": "4.5.4", 301 | "depth": 2, 302 | "source": "registry", 303 | "dependencies": { 304 | "org.nuget.system.buffers": "4.5.1", 305 | "org.nuget.system.numerics.vectors": "4.4.0", 306 | "org.nuget.system.runtime.compilerservices.unsafe": "4.5.3" 307 | }, 308 | "url": "https://unitynuget-registry.openupm.com" 309 | }, 310 | "org.nuget.system.numerics.vectors": { 311 | "version": "4.5.0", 312 | "depth": 3, 313 | "source": "registry", 314 | "dependencies": {}, 315 | "url": "https://unitynuget-registry.openupm.com" 316 | }, 317 | "org.nuget.system.reflection.emit": { 318 | "version": "4.7.0", 319 | "depth": 1, 320 | "source": "registry", 321 | "dependencies": { 322 | "org.nuget.system.reflection.emit.ilgeneration": "4.7.0" 323 | }, 324 | "url": "https://unitynuget-registry.openupm.com" 325 | }, 326 | "org.nuget.system.reflection.emit.ilgeneration": { 327 | "version": "4.7.0", 328 | "depth": 2, 329 | "source": "registry", 330 | "dependencies": {}, 331 | "url": "https://unitynuget-registry.openupm.com" 332 | }, 333 | "org.nuget.system.runtime.compilerservices.unsafe": { 334 | "version": "5.0.0", 335 | "depth": 2, 336 | "source": "registry", 337 | "dependencies": {}, 338 | "url": "https://unitynuget-registry.openupm.com" 339 | }, 340 | "org.nuget.system.security.principal.windows": { 341 | "version": "4.7.0", 342 | "depth": 2, 343 | "source": "registry", 344 | "dependencies": {}, 345 | "url": "https://unitynuget-registry.openupm.com" 346 | }, 347 | "org.nuget.system.text.encodings.web": { 348 | "version": "5.0.0", 349 | "depth": 2, 350 | "source": "registry", 351 | "dependencies": { 352 | "org.nuget.system.memory": "4.5.4" 353 | }, 354 | "url": "https://unitynuget-registry.openupm.com" 355 | }, 356 | "org.nuget.system.text.json": { 357 | "version": "5.0.0", 358 | "depth": 2, 359 | "source": "registry", 360 | "dependencies": { 361 | "org.nuget.microsoft.bcl.asyncinterfaces": "5.0.0", 362 | "org.nuget.system.buffers": "4.5.1", 363 | "org.nuget.system.memory": "4.5.4", 364 | "org.nuget.system.numerics.vectors": "4.5.0", 365 | "org.nuget.system.runtime.compilerservices.unsafe": "5.0.0", 366 | "org.nuget.system.text.encodings.web": "5.0.0", 367 | "org.nuget.system.threading.tasks.extensions": "4.5.4" 368 | }, 369 | "url": "https://unitynuget-registry.openupm.com" 370 | }, 371 | "org.nuget.system.threading.tasks.extensions": { 372 | "version": "4.5.4", 373 | "depth": 2, 374 | "source": "registry", 375 | "dependencies": { 376 | "org.nuget.system.runtime.compilerservices.unsafe": "4.5.3" 377 | }, 378 | "url": "https://unitynuget-registry.openupm.com" 379 | }, 380 | "com.unity.modules.androidjni": { 381 | "version": "1.0.0", 382 | "depth": 0, 383 | "source": "builtin", 384 | "dependencies": {} 385 | }, 386 | "com.unity.modules.hierarchycore": { 387 | "version": "1.0.0", 388 | "depth": 1, 389 | "source": "builtin", 390 | "dependencies": {} 391 | }, 392 | "com.unity.modules.imageconversion": { 393 | "version": "1.0.0", 394 | "depth": 0, 395 | "source": "builtin", 396 | "dependencies": {} 397 | }, 398 | "com.unity.modules.imgui": { 399 | "version": "1.0.0", 400 | "depth": 0, 401 | "source": "builtin", 402 | "dependencies": {} 403 | }, 404 | "com.unity.modules.jsonserialize": { 405 | "version": "1.0.0", 406 | "depth": 0, 407 | "source": "builtin", 408 | "dependencies": {} 409 | }, 410 | "com.unity.modules.ui": { 411 | "version": "1.0.0", 412 | "depth": 0, 413 | "source": "builtin", 414 | "dependencies": {} 415 | }, 416 | "com.unity.modules.uielements": { 417 | "version": "1.0.0", 418 | "depth": 0, 419 | "source": "builtin", 420 | "dependencies": { 421 | "com.unity.modules.ui": "1.0.0", 422 | "com.unity.modules.imgui": "1.0.0", 423 | "com.unity.modules.jsonserialize": "1.0.0", 424 | "com.unity.modules.hierarchycore": "1.0.0" 425 | } 426 | } 427 | } 428 | } 429 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_EnableOutputSuspension: 1 16 | m_SpatializerPlugin: 17 | m_AmbisonicDecoderPlugin: 18 | m_DisableAudio: 0 19 | m_VirtualizeEffects: 1 20 | m_RequestedDSPBufferSize: 0 21 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 17 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_DefaultMaxDepenetrationVelocity: 10 11 | m_SleepThreshold: 0.005 12 | m_DefaultContactOffset: 0.01 13 | m_DefaultSolverIterations: 6 14 | m_DefaultSolverVelocityIterations: 1 15 | m_QueriesHitBackfaces: 0 16 | m_QueriesHitTriggers: 1 17 | m_EnableAdaptiveForce: 0 18 | m_ClothInterCollisionDistance: 0.1 19 | m_ClothInterCollisionStiffness: 0.2 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_SimulationMode: 0 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 0 24 | m_InvokeCollisionCallbacks: 1 25 | m_ClothInterCollisionSettingsToggle: 0 26 | m_ClothGravity: {x: 0, y: -9.81, z: 0} 27 | m_ContactPairsMode: 0 28 | m_BroadphaseType: 0 29 | m_FrictionType: 0 30 | m_EnableEnhancedDeterminism: 0 31 | m_EnableUnifiedHeightmaps: 1 32 | m_ImprovedPatchFriction: 0 33 | m_SolverType: 0 34 | m_DefaultMaxAngularSpeed: 50 35 | m_ScratchBufferChunkCount: 4 36 | m_CurrentBackendId: 4072204805 37 | m_FastMotionThreshold: 3.4028235e+38 38 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Sample/2. DatabaseOperations/DatabaseOperations.unity 10 | guid: 1f0c17a817500ed4ba41dc8fe82c9c30 11 | m_configObjects: {} 12 | m_UseUCBPForAssetBundles: 0 13 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_SerializationMode: 2 8 | m_LineEndingsForNewScripts: 2 9 | m_DefaultBehaviorMode: 0 10 | m_PrefabRegularEnvironment: {fileID: 0} 11 | m_PrefabUIEnvironment: {fileID: 0} 12 | m_SpritePackerMode: 0 13 | m_SpritePackerCacheSize: 10 14 | m_SpritePackerPaddingPower: 1 15 | m_Bc7TextureCompressor: 0 16 | m_EtcTextureCompressorBehavior: 1 17 | m_EtcTextureFastCompressor: 1 18 | m_EtcTextureNormalCompressor: 2 19 | m_EtcTextureBestCompressor: 4 20 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp;java;cpp;c;mm;m;h 21 | m_ProjectGenerationRootNamespace: 22 | m_EnableTextureStreamingInEditMode: 1 23 | m_EnableTextureStreamingInPlayMode: 1 24 | m_EnableEditorAsyncCPUTextureLoading: 0 25 | m_AsyncShaderCompilation: 1 26 | m_PrefabModeAllowAutoSave: 1 27 | m_EnterPlayModeOptionsEnabled: 1 28 | m_EnterPlayModeOptions: 0 29 | m_GameObjectNamingDigits: 1 30 | m_GameObjectNamingScheme: 0 31 | m_AssetNamingUsesSpace: 1 32 | m_InspectorUseIMGUIDefaultInspector: 0 33 | m_UseLegacyProbeSampleCount: 0 34 | m_SerializeInlineMappingsOnOneLine: 1 35 | m_DisableCookiesInLightmapper: 0 36 | m_AssetPipelineMode: 1 37 | m_RefreshImportMode: 0 38 | m_CacheServerMode: 0 39 | m_CacheServerEndpoint: 40 | m_CacheServerNamespacePrefix: default 41 | m_CacheServerEnableDownload: 1 42 | m_CacheServerEnableUpload: 1 43 | m_CacheServerEnableAuth: 0 44 | m_CacheServerEnableTls: 0 45 | m_CacheServerValidationMode: 2 46 | m_CacheServerDownloadBatchSize: 128 47 | m_EnableEnlightenBakedGI: 0 48 | m_ReferencedClipsExactNaming: 1 49 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 16 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_DepthNormals: 17 | m_Mode: 1 18 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 19 | m_MotionVectors: 20 | m_Mode: 1 21 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 22 | m_LightHalo: 23 | m_Mode: 1 24 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LensFlare: 26 | m_Mode: 1 27 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 28 | m_VideoShadersIncludeMode: 2 29 | m_AlwaysIncludedShaders: 30 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 31 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 32 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 37 | m_PreloadedShaders: [] 38 | m_PreloadShadersBatchTimeLimit: -1 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 40 | m_CustomRenderPipeline: {fileID: 0} 41 | m_TransparencySortMode: 0 42 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 43 | m_DefaultRenderingPath: 1 44 | m_DefaultMobileRenderingPath: 1 45 | m_TierSettings: [] 46 | m_LightmapStripping: 0 47 | m_FogStripping: 0 48 | m_InstancingStripping: 0 49 | m_BrgStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_RenderPipelineGlobalSettingsMap: {} 61 | m_LightsUseLinearIntensity: 0 62 | m_LightsUseColorTemperature: 0 63 | m_LogWhenShaderIsCompiled: 0 64 | m_LightProbeOutsideHullStrategy: 1 65 | m_CameraRelativeLightCulling: 0 66 | m_CameraRelativeShadowCulling: 0 67 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | m_UsePhysicalKeys: 1 297 | -------------------------------------------------------------------------------- /ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /ProjectSettings/MultiplayerManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!655991488 &1 4 | MultiplayerManager: 5 | m_ObjectHideFlags: 0 6 | m_EnableMultiplayerRoles: 0 7 | m_StrippingTypes: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 3 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | buildHeightMesh: 0 88 | maxJobWorkers: 0 89 | preserveTilesOutsideBounds: 0 90 | debug: 91 | m_Flags: 0 92 | m_SettingNames: 93 | - Humanoid 94 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 53 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreReleasePackages: 0 16 | m_AdvancedSettingsExpanded: 1 17 | m_ScopedRegistriesSettingsExpanded: 1 18 | m_SeeAllPackageVersions: 0 19 | m_DismissPreviewPackagesInUse: 0 20 | oneTimeWarningShown: 0 21 | oneTimeDeprecatedPopUpShown: 0 22 | m_Registries: 23 | - m_Id: main 24 | m_Name: 25 | m_Url: https://packages.unity.com 26 | m_Scopes: [] 27 | m_IsDefault: 1 28 | m_Capabilities: 7 29 | m_ConfigSource: 0 30 | - m_Id: scoped:project:UnityNuGet 31 | m_Name: UnityNuGet 32 | m_Url: https://unitynuget-registry.openupm.com 33 | m_Scopes: 34 | - org.nuget 35 | m_IsDefault: 0 36 | m_Capabilities: 0 37 | m_ConfigSource: 4 38 | m_UserSelectedRegistryName: UnityNuGet 39 | m_UserAddingNewScopedRegistry: 0 40 | m_RegistryInfoDraft: 41 | m_Modified: 0 42 | m_ErrorMessage: 43 | m_UserModificationsInstanceId: -866 44 | m_OriginalInstanceId: -870 45 | m_LoadAssets: 0 46 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 6 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_BounceThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_ContactThreshold: 0 23 | m_JobOptions: 24 | serializedVersion: 2 25 | useMultithreading: 0 26 | useConsistencySorting: 0 27 | m_InterpolationPosesPerJob: 100 28 | m_NewContactsPerJob: 30 29 | m_CollideContactsPerJob: 100 30 | m_ClearFlagsPerJob: 200 31 | m_ClearBodyForcesPerJob: 200 32 | m_SyncDiscreteFixturesPerJob: 50 33 | m_SyncContinuousFixturesPerJob: 50 34 | m_FindNearestContactsPerJob: 100 35 | m_UpdateTriggerContactsPerJob: 100 36 | m_IslandSolverCostThreshold: 100 37 | m_IslandSolverBodyCostScale: 1 38 | m_IslandSolverContactCostScale: 10 39 | m_IslandSolverJointCostScale: 10 40 | m_IslandSolverBodiesPerJob: 50 41 | m_IslandSolverContactsPerJob: 50 42 | m_SimulationMode: 0 43 | m_SimulationLayers: 44 | serializedVersion: 2 45 | m_Bits: 4294967295 46 | m_MaxSubStepCount: 4 47 | m_MinSubStepFPS: 30 48 | m_UseSubStepping: 0 49 | m_UseSubStepContacts: 0 50 | m_QueriesHitTriggers: 1 51 | m_QueriesStartInColliders: 1 52 | m_CallbacksOnDisable: 1 53 | m_ReuseCollisionCallbacks: 1 54 | m_AutoSyncTransforms: 0 55 | m_GizmoOptions: 10 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 28 7 | productGUID: 26b0f3ca440cc1249ae78676460cff76 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: IvanMurzak 16 | productName: Unity-EntityFrameworkCore-SQLite 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.12156863, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1920 46 | defaultScreenHeight: 1080 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | unsupportedMSAAFallback: 0 52 | m_SpriteBatchMaxVertexCount: 65535 53 | m_SpriteBatchVertexThreshold: 300 54 | m_MTRendering: 1 55 | mipStripping: 0 56 | numberOfMipsStripped: 0 57 | numberOfMipsStrippedPerMipmapLimitGroup: {} 58 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 59 | iosShowActivityIndicatorOnLoading: -1 60 | androidShowActivityIndicatorOnLoading: -1 61 | iosUseCustomAppBackgroundBehavior: 0 62 | allowedAutorotateToPortrait: 1 63 | allowedAutorotateToPortraitUpsideDown: 1 64 | allowedAutorotateToLandscapeRight: 1 65 | allowedAutorotateToLandscapeLeft: 1 66 | useOSAutorotation: 1 67 | use32BitDisplayBuffer: 1 68 | preserveFramebufferAlpha: 0 69 | disableDepthAndStencilBuffers: 0 70 | androidStartInFullscreen: 1 71 | androidRenderOutsideSafeArea: 1 72 | androidUseSwappy: 1 73 | androidBlitType: 0 74 | androidResizeableActivity: 1 75 | androidDefaultWindowWidth: 1920 76 | androidDefaultWindowHeight: 1080 77 | androidMinimumWindowWidth: 400 78 | androidMinimumWindowHeight: 300 79 | androidFullscreenMode: 1 80 | androidAutoRotationBehavior: 1 81 | androidPredictiveBackSupport: 0 82 | androidApplicationEntry: 2 83 | defaultIsNativeResolution: 1 84 | macRetinaSupport: 1 85 | runInBackground: 0 86 | muteOtherAudioSources: 0 87 | Prepare IOS For Recording: 0 88 | Force IOS Speakers When Recording: 0 89 | deferSystemGesturesMode: 0 90 | hideHomeButton: 0 91 | submitAnalytics: 1 92 | usePlayerLog: 1 93 | dedicatedServerOptimizations: 1 94 | bakeCollisionMeshes: 0 95 | forceSingleInstance: 0 96 | useFlipModelSwapchain: 1 97 | resizableWindow: 0 98 | useMacAppStoreValidation: 0 99 | macAppStoreCategory: public.app-category.games 100 | gpuSkinning: 0 101 | meshDeformation: 0 102 | xboxPIXTextureCapture: 0 103 | xboxEnableAvatar: 0 104 | xboxEnableKinect: 0 105 | xboxEnableKinectAutoTracking: 0 106 | xboxEnableFitness: 0 107 | visibleInBackground: 1 108 | allowFullscreenSwitch: 1 109 | fullscreenMode: 1 110 | xboxSpeechDB: 0 111 | xboxEnableHeadOrientation: 0 112 | xboxEnableGuest: 0 113 | xboxEnablePIXSampling: 0 114 | metalFramebufferOnly: 0 115 | xboxOneResolution: 0 116 | xboxOneSResolution: 0 117 | xboxOneXResolution: 3 118 | xboxOneMonoLoggingLevel: 0 119 | xboxOneLoggingLevel: 1 120 | xboxOneDisableEsram: 0 121 | xboxOneEnableTypeOptimization: 0 122 | xboxOnePresentImmediateThreshold: 0 123 | switchQueueCommandMemory: 1048576 124 | switchQueueControlMemory: 16384 125 | switchQueueComputeMemory: 262144 126 | switchNVNShaderPoolsGranularity: 33554432 127 | switchNVNDefaultPoolsGranularity: 16777216 128 | switchNVNOtherPoolsGranularity: 16777216 129 | switchGpuScratchPoolGranularity: 2097152 130 | switchAllowGpuScratchShrinking: 0 131 | switchNVNMaxPublicTextureIDCount: 0 132 | switchNVNMaxPublicSamplerIDCount: 0 133 | switchMaxWorkerMultiple: 8 134 | switchNVNGraphicsFirmwareMemory: 32 135 | vulkanNumSwapchainBuffers: 3 136 | vulkanEnableSetSRGBWrite: 0 137 | vulkanEnablePreTransform: 0 138 | vulkanEnableLateAcquireNextImage: 0 139 | vulkanEnableCommandBufferRecycling: 1 140 | loadStoreDebugModeEnabled: 0 141 | visionOSBundleVersion: 1.0 142 | tvOSBundleVersion: 1.0 143 | bundleVersion: 1.0 144 | preloadedAssets: [] 145 | metroInputSource: 0 146 | wsaTransparentSwapchain: 0 147 | m_HolographicPauseOnTrackingLoss: 1 148 | xboxOneDisableKinectGpuReservation: 1 149 | xboxOneEnable7thCore: 1 150 | vrSettings: 151 | enable360StereoCapture: 0 152 | isWsaHolographicRemotingEnabled: 0 153 | enableFrameTimingStats: 0 154 | enableOpenGLProfilerGPURecorders: 1 155 | allowHDRDisplaySupport: 0 156 | useHDRDisplay: 0 157 | hdrBitDepth: 0 158 | m_ColorGamuts: 00000000 159 | targetPixelDensity: 30 160 | resolutionScalingMode: 0 161 | resetResolutionOnWindowResize: 0 162 | androidSupportedAspectRatio: 1 163 | androidMaxAspectRatio: 2.4 164 | androidMinAspectRatio: 1 165 | applicationIdentifier: 166 | Android: com.DefaultCompany.UnityEntityFrameworkCoreSQLite 167 | Standalone: com.DefaultCompany.Unity-EntityFrameworkCore-SQLite 168 | iPhone: com.DefaultCompany.Unity-EntityFrameworkCore-SQLite 169 | buildNumber: 170 | Standalone: 0 171 | VisionOS: 0 172 | iPhone: 0 173 | tvOS: 0 174 | overrideDefaultApplicationIdentifier: 0 175 | AndroidBundleVersionCode: 1 176 | AndroidMinSdkVersion: 23 177 | AndroidTargetSdkVersion: 0 178 | AndroidPreferredInstallLocation: 1 179 | aotOptions: 180 | stripEngineCode: 1 181 | iPhoneStrippingLevel: 0 182 | iPhoneScriptCallOptimization: 0 183 | ForceInternetPermission: 0 184 | ForceSDCardPermission: 0 185 | CreateWallpaper: 0 186 | androidSplitApplicationBinary: 0 187 | keepLoadedShadersAlive: 0 188 | StripUnusedMeshComponents: 0 189 | strictShaderVariantMatching: 0 190 | VertexChannelCompressionMask: 4054 191 | iPhoneSdkVersion: 988 192 | iOSSimulatorArchitecture: 0 193 | iOSTargetOSVersionString: 13.0 194 | tvOSSdkVersion: 0 195 | tvOSSimulatorArchitecture: 0 196 | tvOSRequireExtendedGameController: 0 197 | tvOSTargetOSVersionString: 13.0 198 | VisionOSSdkVersion: 0 199 | VisionOSTargetOSVersionString: 1.0 200 | uIPrerenderedIcon: 0 201 | uIRequiresPersistentWiFi: 0 202 | uIRequiresFullScreen: 1 203 | uIStatusBarHidden: 1 204 | uIExitOnSuspend: 0 205 | uIStatusBarStyle: 0 206 | appleTVSplashScreen: {fileID: 0} 207 | appleTVSplashScreen2x: {fileID: 0} 208 | tvOSSmallIconLayers: [] 209 | tvOSSmallIconLayers2x: [] 210 | tvOSLargeIconLayers: [] 211 | tvOSLargeIconLayers2x: [] 212 | tvOSTopShelfImageLayers: [] 213 | tvOSTopShelfImageLayers2x: [] 214 | tvOSTopShelfImageWideLayers: [] 215 | tvOSTopShelfImageWideLayers2x: [] 216 | iOSLaunchScreenType: 0 217 | iOSLaunchScreenPortrait: {fileID: 0} 218 | iOSLaunchScreenLandscape: {fileID: 0} 219 | iOSLaunchScreenBackgroundColor: 220 | serializedVersion: 2 221 | rgba: 0 222 | iOSLaunchScreenFillPct: 100 223 | iOSLaunchScreenSize: 100 224 | iOSLaunchScreeniPadType: 0 225 | iOSLaunchScreeniPadImage: {fileID: 0} 226 | iOSLaunchScreeniPadBackgroundColor: 227 | serializedVersion: 2 228 | rgba: 0 229 | iOSLaunchScreeniPadFillPct: 100 230 | iOSLaunchScreeniPadSize: 100 231 | iOSLaunchScreenCustomStoryboardPath: 232 | iOSLaunchScreeniPadCustomStoryboardPath: 233 | iOSDeviceRequirements: [] 234 | iOSURLSchemes: [] 235 | macOSURLSchemes: [] 236 | iOSBackgroundModes: 0 237 | iOSMetalForceHardShadows: 0 238 | metalEditorSupport: 1 239 | metalAPIValidation: 1 240 | metalCompileShaderBinary: 0 241 | iOSRenderExtraFrameOnPause: 0 242 | iosCopyPluginsCodeInsteadOfSymlink: 0 243 | appleDeveloperTeamID: 244 | iOSManualSigningProvisioningProfileID: 245 | tvOSManualSigningProvisioningProfileID: 246 | VisionOSManualSigningProvisioningProfileID: 247 | iOSManualSigningProvisioningProfileType: 0 248 | tvOSManualSigningProvisioningProfileType: 0 249 | VisionOSManualSigningProvisioningProfileType: 0 250 | appleEnableAutomaticSigning: 0 251 | iOSRequireARKit: 0 252 | iOSAutomaticallyDetectAndAddCapabilities: 1 253 | appleEnableProMotion: 0 254 | shaderPrecisionModel: 0 255 | clonedFromGUID: 00000000000000000000000000000000 256 | templatePackageId: 257 | templateDefaultScene: 258 | useCustomMainManifest: 0 259 | useCustomLauncherManifest: 0 260 | useCustomMainGradleTemplate: 0 261 | useCustomLauncherGradleManifest: 0 262 | useCustomBaseGradleTemplate: 0 263 | useCustomGradlePropertiesTemplate: 0 264 | useCustomGradleSettingsTemplate: 0 265 | useCustomProguardFile: 0 266 | AndroidTargetArchitectures: 2 267 | AndroidSplashScreenScale: 0 268 | androidSplashScreen: {fileID: 0} 269 | AndroidKeystoreName: 270 | AndroidKeyaliasName: 271 | AndroidEnableArmv9SecurityFeatures: 0 272 | AndroidEnableArm64MTE: 0 273 | AndroidBuildApkPerCpuArchitecture: 0 274 | AndroidTVCompatibility: 0 275 | AndroidIsGame: 1 276 | AndroidEnableTango: 0 277 | androidEnableBanner: 1 278 | androidUseLowAccuracyLocation: 0 279 | androidUseCustomKeystore: 0 280 | m_AndroidBanners: 281 | - width: 320 282 | height: 180 283 | banner: {fileID: 0} 284 | androidGamepadSupportLevel: 0 285 | AndroidMinifyRelease: 0 286 | AndroidMinifyDebug: 0 287 | AndroidValidateAppBundleSize: 1 288 | AndroidAppBundleSizeToValidate: 200 289 | AndroidReportGooglePlayAppDependencies: 1 290 | androidSymbolsSizeThreshold: 800 291 | m_BuildTargetIcons: [] 292 | m_BuildTargetPlatformIcons: 293 | - m_BuildTarget: iPhone 294 | m_Icons: 295 | - m_Textures: [] 296 | m_Width: 180 297 | m_Height: 180 298 | m_Kind: 0 299 | m_SubKind: iPhone 300 | - m_Textures: [] 301 | m_Width: 120 302 | m_Height: 120 303 | m_Kind: 0 304 | m_SubKind: iPhone 305 | - m_Textures: [] 306 | m_Width: 167 307 | m_Height: 167 308 | m_Kind: 0 309 | m_SubKind: iPad 310 | - m_Textures: [] 311 | m_Width: 152 312 | m_Height: 152 313 | m_Kind: 0 314 | m_SubKind: iPad 315 | - m_Textures: [] 316 | m_Width: 76 317 | m_Height: 76 318 | m_Kind: 0 319 | m_SubKind: iPad 320 | - m_Textures: [] 321 | m_Width: 120 322 | m_Height: 120 323 | m_Kind: 3 324 | m_SubKind: iPhone 325 | - m_Textures: [] 326 | m_Width: 80 327 | m_Height: 80 328 | m_Kind: 3 329 | m_SubKind: iPhone 330 | - m_Textures: [] 331 | m_Width: 80 332 | m_Height: 80 333 | m_Kind: 3 334 | m_SubKind: iPad 335 | - m_Textures: [] 336 | m_Width: 40 337 | m_Height: 40 338 | m_Kind: 3 339 | m_SubKind: iPad 340 | - m_Textures: [] 341 | m_Width: 87 342 | m_Height: 87 343 | m_Kind: 1 344 | m_SubKind: iPhone 345 | - m_Textures: [] 346 | m_Width: 58 347 | m_Height: 58 348 | m_Kind: 1 349 | m_SubKind: iPhone 350 | - m_Textures: [] 351 | m_Width: 29 352 | m_Height: 29 353 | m_Kind: 1 354 | m_SubKind: iPhone 355 | - m_Textures: [] 356 | m_Width: 58 357 | m_Height: 58 358 | m_Kind: 1 359 | m_SubKind: iPad 360 | - m_Textures: [] 361 | m_Width: 29 362 | m_Height: 29 363 | m_Kind: 1 364 | m_SubKind: iPad 365 | - m_Textures: [] 366 | m_Width: 60 367 | m_Height: 60 368 | m_Kind: 2 369 | m_SubKind: iPhone 370 | - m_Textures: [] 371 | m_Width: 40 372 | m_Height: 40 373 | m_Kind: 2 374 | m_SubKind: iPhone 375 | - m_Textures: [] 376 | m_Width: 40 377 | m_Height: 40 378 | m_Kind: 2 379 | m_SubKind: iPad 380 | - m_Textures: [] 381 | m_Width: 20 382 | m_Height: 20 383 | m_Kind: 2 384 | m_SubKind: iPad 385 | - m_Textures: [] 386 | m_Width: 1024 387 | m_Height: 1024 388 | m_Kind: 4 389 | m_SubKind: App Store 390 | - m_BuildTarget: Android 391 | m_Icons: 392 | - m_Textures: [] 393 | m_Width: 432 394 | m_Height: 432 395 | m_Kind: 2 396 | m_SubKind: 397 | - m_Textures: [] 398 | m_Width: 324 399 | m_Height: 324 400 | m_Kind: 2 401 | m_SubKind: 402 | - m_Textures: [] 403 | m_Width: 216 404 | m_Height: 216 405 | m_Kind: 2 406 | m_SubKind: 407 | - m_Textures: [] 408 | m_Width: 162 409 | m_Height: 162 410 | m_Kind: 2 411 | m_SubKind: 412 | - m_Textures: [] 413 | m_Width: 108 414 | m_Height: 108 415 | m_Kind: 2 416 | m_SubKind: 417 | - m_Textures: [] 418 | m_Width: 81 419 | m_Height: 81 420 | m_Kind: 2 421 | m_SubKind: 422 | - m_Textures: [] 423 | m_Width: 192 424 | m_Height: 192 425 | m_Kind: 1 426 | m_SubKind: 427 | - m_Textures: [] 428 | m_Width: 144 429 | m_Height: 144 430 | m_Kind: 1 431 | m_SubKind: 432 | - m_Textures: [] 433 | m_Width: 96 434 | m_Height: 96 435 | m_Kind: 1 436 | m_SubKind: 437 | - m_Textures: [] 438 | m_Width: 72 439 | m_Height: 72 440 | m_Kind: 1 441 | m_SubKind: 442 | - m_Textures: [] 443 | m_Width: 48 444 | m_Height: 48 445 | m_Kind: 1 446 | m_SubKind: 447 | - m_Textures: [] 448 | m_Width: 36 449 | m_Height: 36 450 | m_Kind: 1 451 | m_SubKind: 452 | - m_Textures: [] 453 | m_Width: 192 454 | m_Height: 192 455 | m_Kind: 0 456 | m_SubKind: 457 | - m_Textures: [] 458 | m_Width: 144 459 | m_Height: 144 460 | m_Kind: 0 461 | m_SubKind: 462 | - m_Textures: [] 463 | m_Width: 96 464 | m_Height: 96 465 | m_Kind: 0 466 | m_SubKind: 467 | - m_Textures: [] 468 | m_Width: 72 469 | m_Height: 72 470 | m_Kind: 0 471 | m_SubKind: 472 | - m_Textures: [] 473 | m_Width: 48 474 | m_Height: 48 475 | m_Kind: 0 476 | m_SubKind: 477 | - m_Textures: [] 478 | m_Width: 36 479 | m_Height: 36 480 | m_Kind: 0 481 | m_SubKind: 482 | m_BuildTargetBatching: [] 483 | m_BuildTargetShaderSettings: [] 484 | m_BuildTargetGraphicsJobs: [] 485 | m_BuildTargetGraphicsJobMode: [] 486 | m_BuildTargetGraphicsAPIs: 487 | - m_BuildTarget: WindowsStandaloneSupport 488 | m_APIs: 0200000012000000 489 | m_Automatic: 0 490 | m_BuildTargetVRSettings: [] 491 | m_DefaultShaderChunkSizeInMB: 16 492 | m_DefaultShaderChunkCount: 0 493 | openGLRequireES31: 0 494 | openGLRequireES31AEP: 0 495 | openGLRequireES32: 0 496 | m_TemplateCustomTags: {} 497 | mobileMTRendering: 498 | Android: 1 499 | VisionOS: 1 500 | iPhone: 1 501 | tvOS: 1 502 | m_BuildTargetGroupLightmapEncodingQuality: [] 503 | m_BuildTargetGroupHDRCubemapEncodingQuality: [] 504 | m_BuildTargetGroupLightmapSettings: [] 505 | m_BuildTargetGroupLoadStoreDebugModeSettings: [] 506 | m_BuildTargetNormalMapEncoding: [] 507 | m_BuildTargetDefaultTextureCompressionFormat: 508 | - serializedVersion: 3 509 | m_BuildTarget: Android 510 | m_Formats: 01000000 511 | - serializedVersion: 3 512 | m_BuildTarget: iOS 513 | m_Formats: 03000000 514 | playModeTestRunnerEnabled: 0 515 | runPlayModeTestAsEditModeTest: 0 516 | actionOnDotNetUnhandledException: 1 517 | editorGfxJobOverride: 1 518 | enableInternalProfiler: 0 519 | logObjCUncaughtExceptions: 1 520 | enableCrashReportAPI: 0 521 | cameraUsageDescription: 522 | locationUsageDescription: 523 | microphoneUsageDescription: 524 | bluetoothUsageDescription: 525 | macOSTargetOSVersion: 11.0 526 | switchNMETAOverride: 527 | switchNetLibKey: 528 | switchSocketMemoryPoolSize: 6144 529 | switchSocketAllocatorPoolSize: 128 530 | switchSocketConcurrencyLimit: 14 531 | switchScreenResolutionBehavior: 2 532 | switchUseCPUProfiler: 0 533 | switchEnableFileSystemTrace: 0 534 | switchLTOSetting: 0 535 | switchApplicationID: 0x01004b9000490000 536 | switchNSODependencies: 537 | switchCompilerFlags: 538 | switchTitleNames_0: 539 | switchTitleNames_1: 540 | switchTitleNames_2: 541 | switchTitleNames_3: 542 | switchTitleNames_4: 543 | switchTitleNames_5: 544 | switchTitleNames_6: 545 | switchTitleNames_7: 546 | switchTitleNames_8: 547 | switchTitleNames_9: 548 | switchTitleNames_10: 549 | switchTitleNames_11: 550 | switchTitleNames_12: 551 | switchTitleNames_13: 552 | switchTitleNames_14: 553 | switchTitleNames_15: 554 | switchPublisherNames_0: 555 | switchPublisherNames_1: 556 | switchPublisherNames_2: 557 | switchPublisherNames_3: 558 | switchPublisherNames_4: 559 | switchPublisherNames_5: 560 | switchPublisherNames_6: 561 | switchPublisherNames_7: 562 | switchPublisherNames_8: 563 | switchPublisherNames_9: 564 | switchPublisherNames_10: 565 | switchPublisherNames_11: 566 | switchPublisherNames_12: 567 | switchPublisherNames_13: 568 | switchPublisherNames_14: 569 | switchPublisherNames_15: 570 | switchIcons_0: {fileID: 0} 571 | switchIcons_1: {fileID: 0} 572 | switchIcons_2: {fileID: 0} 573 | switchIcons_3: {fileID: 0} 574 | switchIcons_4: {fileID: 0} 575 | switchIcons_5: {fileID: 0} 576 | switchIcons_6: {fileID: 0} 577 | switchIcons_7: {fileID: 0} 578 | switchIcons_8: {fileID: 0} 579 | switchIcons_9: {fileID: 0} 580 | switchIcons_10: {fileID: 0} 581 | switchIcons_11: {fileID: 0} 582 | switchIcons_12: {fileID: 0} 583 | switchIcons_13: {fileID: 0} 584 | switchIcons_14: {fileID: 0} 585 | switchIcons_15: {fileID: 0} 586 | switchSmallIcons_0: {fileID: 0} 587 | switchSmallIcons_1: {fileID: 0} 588 | switchSmallIcons_2: {fileID: 0} 589 | switchSmallIcons_3: {fileID: 0} 590 | switchSmallIcons_4: {fileID: 0} 591 | switchSmallIcons_5: {fileID: 0} 592 | switchSmallIcons_6: {fileID: 0} 593 | switchSmallIcons_7: {fileID: 0} 594 | switchSmallIcons_8: {fileID: 0} 595 | switchSmallIcons_9: {fileID: 0} 596 | switchSmallIcons_10: {fileID: 0} 597 | switchSmallIcons_11: {fileID: 0} 598 | switchSmallIcons_12: {fileID: 0} 599 | switchSmallIcons_13: {fileID: 0} 600 | switchSmallIcons_14: {fileID: 0} 601 | switchSmallIcons_15: {fileID: 0} 602 | switchManualHTML: 603 | switchAccessibleURLs: 604 | switchLegalInformation: 605 | switchMainThreadStackSize: 1048576 606 | switchPresenceGroupId: 607 | switchLogoHandling: 0 608 | switchReleaseVersion: 0 609 | switchDisplayVersion: 1.0.0 610 | switchStartupUserAccount: 0 611 | switchSupportedLanguagesMask: 0 612 | switchLogoType: 0 613 | switchApplicationErrorCodeCategory: 614 | switchUserAccountSaveDataSize: 0 615 | switchUserAccountSaveDataJournalSize: 0 616 | switchApplicationAttribute: 0 617 | switchCardSpecSize: -1 618 | switchCardSpecClock: -1 619 | switchRatingsMask: 0 620 | switchRatingsInt_0: 0 621 | switchRatingsInt_1: 0 622 | switchRatingsInt_2: 0 623 | switchRatingsInt_3: 0 624 | switchRatingsInt_4: 0 625 | switchRatingsInt_5: 0 626 | switchRatingsInt_6: 0 627 | switchRatingsInt_7: 0 628 | switchRatingsInt_8: 0 629 | switchRatingsInt_9: 0 630 | switchRatingsInt_10: 0 631 | switchRatingsInt_11: 0 632 | switchRatingsInt_12: 0 633 | switchLocalCommunicationIds_0: 634 | switchLocalCommunicationIds_1: 635 | switchLocalCommunicationIds_2: 636 | switchLocalCommunicationIds_3: 637 | switchLocalCommunicationIds_4: 638 | switchLocalCommunicationIds_5: 639 | switchLocalCommunicationIds_6: 640 | switchLocalCommunicationIds_7: 641 | switchParentalControl: 0 642 | switchAllowsScreenshot: 1 643 | switchAllowsVideoCapturing: 1 644 | switchAllowsRuntimeAddOnContentInstall: 0 645 | switchDataLossConfirmation: 0 646 | switchUserAccountLockEnabled: 0 647 | switchSystemResourceMemory: 16777216 648 | switchSupportedNpadStyles: 22 649 | switchNativeFsCacheSize: 32 650 | switchIsHoldTypeHorizontal: 1 651 | switchSupportedNpadCount: 8 652 | switchEnableTouchScreen: 1 653 | switchSocketConfigEnabled: 0 654 | switchTcpInitialSendBufferSize: 32 655 | switchTcpInitialReceiveBufferSize: 64 656 | switchTcpAutoSendBufferSizeMax: 256 657 | switchTcpAutoReceiveBufferSizeMax: 256 658 | switchUdpSendBufferSize: 9 659 | switchUdpReceiveBufferSize: 42 660 | switchSocketBufferEfficiency: 4 661 | switchSocketInitializeEnabled: 1 662 | switchNetworkInterfaceManagerInitializeEnabled: 1 663 | switchDisableHTCSPlayerConnection: 0 664 | switchUseNewStyleFilepaths: 1 665 | switchUseLegacyFmodPriorities: 0 666 | switchUseMicroSleepForYield: 1 667 | switchEnableRamDiskSupport: 0 668 | switchMicroSleepForYieldTime: 25 669 | switchRamDiskSpaceSize: 12 670 | switchUpgradedPlayerSettingsToNMETA: 0 671 | ps4NPAgeRating: 12 672 | ps4NPTitleSecret: 673 | ps4NPTrophyPackPath: 674 | ps4ParentalLevel: 11 675 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 676 | ps4Category: 0 677 | ps4MasterVersion: 01.00 678 | ps4AppVersion: 01.00 679 | ps4AppType: 0 680 | ps4ParamSfxPath: 681 | ps4VideoOutPixelFormat: 0 682 | ps4VideoOutInitialWidth: 1920 683 | ps4VideoOutBaseModeInitialWidth: 1920 684 | ps4VideoOutReprojectionRate: 60 685 | ps4PronunciationXMLPath: 686 | ps4PronunciationSIGPath: 687 | ps4BackgroundImagePath: 688 | ps4StartupImagePath: 689 | ps4StartupImagesFolder: 690 | ps4IconImagesFolder: 691 | ps4SaveDataImagePath: 692 | ps4SdkOverride: 693 | ps4BGMPath: 694 | ps4ShareFilePath: 695 | ps4ShareOverlayImagePath: 696 | ps4PrivacyGuardImagePath: 697 | ps4ExtraSceSysFile: 698 | ps4NPtitleDatPath: 699 | ps4RemotePlayKeyAssignment: -1 700 | ps4RemotePlayKeyMappingDir: 701 | ps4PlayTogetherPlayerCount: 0 702 | ps4EnterButtonAssignment: 2 703 | ps4ApplicationParam1: 0 704 | ps4ApplicationParam2: 0 705 | ps4ApplicationParam3: 0 706 | ps4ApplicationParam4: 0 707 | ps4DownloadDataSize: 0 708 | ps4GarlicHeapSize: 2048 709 | ps4ProGarlicHeapSize: 2560 710 | playerPrefsMaxSize: 32768 711 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 712 | ps4pnSessions: 1 713 | ps4pnPresence: 1 714 | ps4pnFriends: 1 715 | ps4pnGameCustomData: 1 716 | playerPrefsSupport: 0 717 | enableApplicationExit: 0 718 | resetTempFolder: 1 719 | restrictedAudioUsageRights: 0 720 | ps4UseResolutionFallback: 0 721 | ps4ReprojectionSupport: 0 722 | ps4UseAudio3dBackend: 0 723 | ps4UseLowGarlicFragmentationMode: 1 724 | ps4SocialScreenEnabled: 0 725 | ps4ScriptOptimizationLevel: 2 726 | ps4Audio3dVirtualSpeakerCount: 14 727 | ps4attribCpuUsage: 0 728 | ps4PatchPkgPath: 729 | ps4PatchLatestPkgPath: 730 | ps4PatchChangeinfoPath: 731 | ps4PatchDayOne: 0 732 | ps4attribUserManagement: 0 733 | ps4attribMoveSupport: 0 734 | ps4attrib3DSupport: 0 735 | ps4attribShareSupport: 0 736 | ps4attribExclusiveVR: 0 737 | ps4disableAutoHideSplash: 0 738 | ps4videoRecordingFeaturesUsed: 0 739 | ps4contentSearchFeaturesUsed: 0 740 | ps4CompatibilityPS5: 0 741 | ps4AllowPS5Detection: 0 742 | ps4GPU800MHz: 1 743 | ps4attribEyeToEyeDistanceSettingVR: 0 744 | ps4IncludedModules: [] 745 | ps4attribVROutputEnabled: 0 746 | monoEnv: 747 | splashScreenBackgroundSourceLandscape: {fileID: 0} 748 | splashScreenBackgroundSourcePortrait: {fileID: 0} 749 | blurSplashScreenBackground: 1 750 | spritePackerPolicy: 751 | webGLMemorySize: 32 752 | webGLExceptionSupport: 1 753 | webGLNameFilesAsHashes: 0 754 | webGLShowDiagnostics: 0 755 | webGLDataCaching: 1 756 | webGLDebugSymbols: 0 757 | webGLEmscriptenArgs: 758 | webGLModulesDirectory: 759 | webGLTemplate: APPLICATION:Default 760 | webGLAnalyzeBuildSize: 0 761 | webGLUseEmbeddedResources: 0 762 | webGLCompressionFormat: 1 763 | webGLWasmArithmeticExceptions: 0 764 | webGLLinkerTarget: 1 765 | webGLThreadsSupport: 0 766 | webGLDecompressionFallback: 0 767 | webGLInitialMemorySize: 32 768 | webGLMaximumMemorySize: 2048 769 | webGLMemoryGrowthMode: 2 770 | webGLMemoryLinearGrowthStep: 16 771 | webGLMemoryGeometricGrowthStep: 0.2 772 | webGLMemoryGeometricGrowthCap: 96 773 | webGLPowerPreference: 2 774 | webGLWebAssemblyTable: 0 775 | webGLWebAssemblyBigInt: 0 776 | webGLCloseOnQuit: 0 777 | webWasm2023: 0 778 | webEnableSubmoduleStrippingCompatibility: 0 779 | scriptingDefineSymbols: {} 780 | additionalCompilerArguments: {} 781 | platformArchitecture: {} 782 | scriptingBackend: 783 | Standalone: 1 784 | il2cppCompilerConfiguration: {} 785 | il2cppCodeGeneration: {} 786 | il2cppStacktraceInformation: {} 787 | managedStrippingLevel: {} 788 | incrementalIl2cppBuild: {} 789 | suppressCommonWarnings: 1 790 | allowUnsafeCode: 0 791 | useDeterministicCompilation: 1 792 | additionalIl2CppArgs: 793 | scriptingRuntimeVersion: 1 794 | gcIncremental: 1 795 | gcWBarrierValidation: 0 796 | apiCompatibilityLevelPerPlatform: {} 797 | editorAssembliesCompatibilityLevel: 3 798 | m_RenderingPath: 1 799 | m_MobileRenderingPath: 1 800 | metroPackageName: Unity-EntityFrameworkCore-SQLite 801 | metroPackageVersion: 802 | metroCertificatePath: 803 | metroCertificatePassword: 804 | metroCertificateSubject: 805 | metroCertificateIssuer: 806 | metroCertificateNotAfter: 0000000000000000 807 | metroApplicationDescription: Unity-EntityFrameworkCore-SQLite 808 | wsaImages: {} 809 | metroTileShortName: 810 | metroTileShowName: 0 811 | metroMediumTileShowName: 0 812 | metroLargeTileShowName: 0 813 | metroWideTileShowName: 0 814 | metroSupportStreamingInstall: 0 815 | metroLastRequiredScene: 0 816 | metroDefaultTileSize: 1 817 | metroTileForegroundText: 2 818 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 819 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} 820 | metroSplashScreenUseBackgroundColor: 0 821 | syncCapabilities: 0 822 | platformCapabilities: {} 823 | metroTargetDeviceFamilies: {} 824 | metroFTAName: 825 | metroFTAFileTypes: [] 826 | metroProtocolName: 827 | vcxProjDefaultLanguage: 828 | XboxOneProductId: 829 | XboxOneUpdateKey: 830 | XboxOneSandboxId: 831 | XboxOneContentId: 832 | XboxOneTitleId: 833 | XboxOneSCId: 834 | XboxOneGameOsOverridePath: 835 | XboxOnePackagingOverridePath: 836 | XboxOneAppManifestOverridePath: 837 | XboxOneVersion: 1.0.0.0 838 | XboxOnePackageEncryption: 0 839 | XboxOnePackageUpdateGranularity: 2 840 | XboxOneDescription: 841 | XboxOneLanguage: 842 | - enus 843 | XboxOneCapability: [] 844 | XboxOneGameRating: {} 845 | XboxOneIsContentPackage: 0 846 | XboxOneEnhancedXboxCompatibilityMode: 0 847 | XboxOneEnableGPUVariability: 1 848 | XboxOneSockets: {} 849 | XboxOneSplashScreen: {fileID: 0} 850 | XboxOneAllowedProductIds: [] 851 | XboxOnePersistentLocalStorageSize: 0 852 | XboxOneXTitleMemory: 8 853 | XboxOneOverrideIdentityName: 854 | XboxOneOverrideIdentityPublisher: 855 | vrEditorSettings: {} 856 | cloudServicesEnabled: {} 857 | luminIcon: 858 | m_Name: 859 | m_ModelFolderPath: 860 | m_PortalFolderPath: 861 | luminCert: 862 | m_CertPath: 863 | m_SignPackage: 1 864 | luminIsChannelApp: 0 865 | luminVersion: 866 | m_VersionCode: 1 867 | m_VersionName: 868 | hmiPlayerDataPath: 869 | hmiForceSRGBBlit: 0 870 | embeddedLinuxEnableGamepadInput: 0 871 | hmiCpuConfiguration: 872 | hmiLogStartupTiming: 0 873 | qnxGraphicConfPath: 874 | apiCompatibilityLevel: 6 875 | captureStartupLogs: {} 876 | activeInputHandler: 0 877 | windowsGamepadBackendHint: 0 878 | cloudProjectId: 879 | framebufferDepthMemorylessMode: 0 880 | qualitySettingsNames: [] 881 | projectName: 882 | organizationId: 883 | cloudEnabled: 0 884 | legacyClampBlendShapeWeights: 0 885 | hmiLoadingImage: {fileID: 0} 886 | platformRequiresReadableAssets: 0 887 | virtualTexturingSupportEnabled: 0 888 | insecureHttpOption: 0 889 | androidVulkanDenyFilterList: [] 890 | androidVulkanAllowFilterList: [] 891 | androidVulkanDeviceFilterListAsset: {fileID: 0} 892 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 6000.1.2f1 2 | m_EditorVersionWithRevision: 6000.1.2f1 (8e2281df4c52) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 4 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | skinWeights: 1 22 | globalTextureMipmapLimit: 1 23 | textureMipmapLimitSettings: [] 24 | anisotropicTextures: 0 25 | antiAliasing: 0 26 | softParticles: 0 27 | softVegetation: 0 28 | realtimeReflectionProbes: 0 29 | billboardsFaceCameraPosition: 0 30 | useLegacyDetailDistribution: 0 31 | adaptiveVsync: 0 32 | vSyncCount: 0 33 | realtimeGICPUUsage: 25 34 | adaptiveVsyncExtraA: 0 35 | adaptiveVsyncExtraB: 0 36 | lodBias: 0.3 37 | maximumLODLevel: 0 38 | enableLODCrossFade: 1 39 | streamingMipmapsActive: 0 40 | streamingMipmapsAddAllCameras: 1 41 | streamingMipmapsMemoryBudget: 512 42 | streamingMipmapsRenderersPerFrame: 512 43 | streamingMipmapsMaxLevelReduction: 2 44 | streamingMipmapsMaxFileIORequests: 1024 45 | particleRaycastBudget: 4 46 | asyncUploadTimeSlice: 2 47 | asyncUploadBufferSize: 16 48 | asyncUploadPersistentBuffer: 1 49 | resolutionScalingFixedDPIFactor: 1 50 | customRenderPipeline: {fileID: 0} 51 | terrainQualityOverrides: 0 52 | terrainPixelError: 1 53 | terrainDetailDensityScale: 1 54 | terrainBasemapDistance: 1000 55 | terrainDetailDistance: 80 56 | terrainTreeDistance: 5000 57 | terrainBillboardStart: 50 58 | terrainFadeLength: 5 59 | terrainMaxTrees: 50 60 | excludedTargetPlatforms: [] 61 | - serializedVersion: 4 62 | name: Low 63 | pixelLightCount: 0 64 | shadows: 0 65 | shadowResolution: 0 66 | shadowProjection: 1 67 | shadowCascades: 1 68 | shadowDistance: 20 69 | shadowNearPlaneOffset: 3 70 | shadowCascade2Split: 0.33333334 71 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 72 | shadowmaskMode: 0 73 | skinWeights: 2 74 | globalTextureMipmapLimit: 0 75 | textureMipmapLimitSettings: [] 76 | anisotropicTextures: 0 77 | antiAliasing: 0 78 | softParticles: 0 79 | softVegetation: 0 80 | realtimeReflectionProbes: 0 81 | billboardsFaceCameraPosition: 0 82 | useLegacyDetailDistribution: 0 83 | adaptiveVsync: 0 84 | vSyncCount: 0 85 | realtimeGICPUUsage: 25 86 | adaptiveVsyncExtraA: 0 87 | adaptiveVsyncExtraB: 0 88 | lodBias: 0.4 89 | maximumLODLevel: 0 90 | enableLODCrossFade: 1 91 | streamingMipmapsActive: 0 92 | streamingMipmapsAddAllCameras: 1 93 | streamingMipmapsMemoryBudget: 512 94 | streamingMipmapsRenderersPerFrame: 512 95 | streamingMipmapsMaxLevelReduction: 2 96 | streamingMipmapsMaxFileIORequests: 1024 97 | particleRaycastBudget: 16 98 | asyncUploadTimeSlice: 2 99 | asyncUploadBufferSize: 16 100 | asyncUploadPersistentBuffer: 1 101 | resolutionScalingFixedDPIFactor: 1 102 | customRenderPipeline: {fileID: 0} 103 | terrainQualityOverrides: 0 104 | terrainPixelError: 1 105 | terrainDetailDensityScale: 1 106 | terrainBasemapDistance: 1000 107 | terrainDetailDistance: 80 108 | terrainTreeDistance: 5000 109 | terrainBillboardStart: 50 110 | terrainFadeLength: 5 111 | terrainMaxTrees: 50 112 | excludedTargetPlatforms: [] 113 | - serializedVersion: 4 114 | name: Medium 115 | pixelLightCount: 1 116 | shadows: 1 117 | shadowResolution: 0 118 | shadowProjection: 1 119 | shadowCascades: 1 120 | shadowDistance: 20 121 | shadowNearPlaneOffset: 3 122 | shadowCascade2Split: 0.33333334 123 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 124 | shadowmaskMode: 0 125 | skinWeights: 2 126 | globalTextureMipmapLimit: 0 127 | textureMipmapLimitSettings: [] 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 0 132 | realtimeReflectionProbes: 0 133 | billboardsFaceCameraPosition: 0 134 | useLegacyDetailDistribution: 0 135 | adaptiveVsync: 0 136 | vSyncCount: 1 137 | realtimeGICPUUsage: 25 138 | adaptiveVsyncExtraA: 0 139 | adaptiveVsyncExtraB: 0 140 | lodBias: 0.7 141 | maximumLODLevel: 0 142 | enableLODCrossFade: 1 143 | streamingMipmapsActive: 0 144 | streamingMipmapsAddAllCameras: 1 145 | streamingMipmapsMemoryBudget: 512 146 | streamingMipmapsRenderersPerFrame: 512 147 | streamingMipmapsMaxLevelReduction: 2 148 | streamingMipmapsMaxFileIORequests: 1024 149 | particleRaycastBudget: 64 150 | asyncUploadTimeSlice: 2 151 | asyncUploadBufferSize: 16 152 | asyncUploadPersistentBuffer: 1 153 | resolutionScalingFixedDPIFactor: 1 154 | customRenderPipeline: {fileID: 0} 155 | terrainQualityOverrides: 0 156 | terrainPixelError: 1 157 | terrainDetailDensityScale: 1 158 | terrainBasemapDistance: 1000 159 | terrainDetailDistance: 80 160 | terrainTreeDistance: 5000 161 | terrainBillboardStart: 50 162 | terrainFadeLength: 5 163 | terrainMaxTrees: 50 164 | excludedTargetPlatforms: [] 165 | - serializedVersion: 4 166 | name: High 167 | pixelLightCount: 2 168 | shadows: 2 169 | shadowResolution: 1 170 | shadowProjection: 1 171 | shadowCascades: 2 172 | shadowDistance: 40 173 | shadowNearPlaneOffset: 3 174 | shadowCascade2Split: 0.33333334 175 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 176 | shadowmaskMode: 1 177 | skinWeights: 2 178 | globalTextureMipmapLimit: 0 179 | textureMipmapLimitSettings: [] 180 | anisotropicTextures: 1 181 | antiAliasing: 0 182 | softParticles: 0 183 | softVegetation: 1 184 | realtimeReflectionProbes: 1 185 | billboardsFaceCameraPosition: 1 186 | useLegacyDetailDistribution: 0 187 | adaptiveVsync: 0 188 | vSyncCount: 1 189 | realtimeGICPUUsage: 50 190 | adaptiveVsyncExtraA: 0 191 | adaptiveVsyncExtraB: 0 192 | lodBias: 1 193 | maximumLODLevel: 0 194 | enableLODCrossFade: 1 195 | streamingMipmapsActive: 0 196 | streamingMipmapsAddAllCameras: 1 197 | streamingMipmapsMemoryBudget: 512 198 | streamingMipmapsRenderersPerFrame: 512 199 | streamingMipmapsMaxLevelReduction: 2 200 | streamingMipmapsMaxFileIORequests: 1024 201 | particleRaycastBudget: 256 202 | asyncUploadTimeSlice: 2 203 | asyncUploadBufferSize: 16 204 | asyncUploadPersistentBuffer: 1 205 | resolutionScalingFixedDPIFactor: 1 206 | customRenderPipeline: {fileID: 0} 207 | terrainQualityOverrides: 0 208 | terrainPixelError: 1 209 | terrainDetailDensityScale: 1 210 | terrainBasemapDistance: 1000 211 | terrainDetailDistance: 80 212 | terrainTreeDistance: 5000 213 | terrainBillboardStart: 50 214 | terrainFadeLength: 5 215 | terrainMaxTrees: 50 216 | excludedTargetPlatforms: [] 217 | - serializedVersion: 4 218 | name: Very High 219 | pixelLightCount: 3 220 | shadows: 2 221 | shadowResolution: 2 222 | shadowProjection: 1 223 | shadowCascades: 2 224 | shadowDistance: 70 225 | shadowNearPlaneOffset: 3 226 | shadowCascade2Split: 0.33333334 227 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 228 | shadowmaskMode: 1 229 | skinWeights: 4 230 | globalTextureMipmapLimit: 0 231 | textureMipmapLimitSettings: [] 232 | anisotropicTextures: 2 233 | antiAliasing: 2 234 | softParticles: 1 235 | softVegetation: 1 236 | realtimeReflectionProbes: 1 237 | billboardsFaceCameraPosition: 1 238 | useLegacyDetailDistribution: 0 239 | adaptiveVsync: 0 240 | vSyncCount: 1 241 | realtimeGICPUUsage: 50 242 | adaptiveVsyncExtraA: 0 243 | adaptiveVsyncExtraB: 0 244 | lodBias: 1.5 245 | maximumLODLevel: 0 246 | enableLODCrossFade: 1 247 | streamingMipmapsActive: 0 248 | streamingMipmapsAddAllCameras: 1 249 | streamingMipmapsMemoryBudget: 512 250 | streamingMipmapsRenderersPerFrame: 512 251 | streamingMipmapsMaxLevelReduction: 2 252 | streamingMipmapsMaxFileIORequests: 1024 253 | particleRaycastBudget: 1024 254 | asyncUploadTimeSlice: 2 255 | asyncUploadBufferSize: 16 256 | asyncUploadPersistentBuffer: 1 257 | resolutionScalingFixedDPIFactor: 1 258 | customRenderPipeline: {fileID: 0} 259 | terrainQualityOverrides: 0 260 | terrainPixelError: 1 261 | terrainDetailDensityScale: 1 262 | terrainBasemapDistance: 1000 263 | terrainDetailDistance: 80 264 | terrainTreeDistance: 5000 265 | terrainBillboardStart: 50 266 | terrainFadeLength: 5 267 | terrainMaxTrees: 50 268 | excludedTargetPlatforms: [] 269 | - serializedVersion: 4 270 | name: Ultra 271 | pixelLightCount: 4 272 | shadows: 2 273 | shadowResolution: 2 274 | shadowProjection: 1 275 | shadowCascades: 4 276 | shadowDistance: 150 277 | shadowNearPlaneOffset: 3 278 | shadowCascade2Split: 0.33333334 279 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 280 | shadowmaskMode: 1 281 | skinWeights: 255 282 | globalTextureMipmapLimit: 0 283 | textureMipmapLimitSettings: [] 284 | anisotropicTextures: 2 285 | antiAliasing: 2 286 | softParticles: 1 287 | softVegetation: 1 288 | realtimeReflectionProbes: 1 289 | billboardsFaceCameraPosition: 1 290 | useLegacyDetailDistribution: 0 291 | adaptiveVsync: 0 292 | vSyncCount: 1 293 | realtimeGICPUUsage: 100 294 | adaptiveVsyncExtraA: 0 295 | adaptiveVsyncExtraB: 0 296 | lodBias: 2 297 | maximumLODLevel: 0 298 | enableLODCrossFade: 1 299 | streamingMipmapsActive: 0 300 | streamingMipmapsAddAllCameras: 1 301 | streamingMipmapsMemoryBudget: 512 302 | streamingMipmapsRenderersPerFrame: 512 303 | streamingMipmapsMaxLevelReduction: 2 304 | streamingMipmapsMaxFileIORequests: 1024 305 | particleRaycastBudget: 4096 306 | asyncUploadTimeSlice: 2 307 | asyncUploadBufferSize: 16 308 | asyncUploadPersistentBuffer: 1 309 | resolutionScalingFixedDPIFactor: 1 310 | customRenderPipeline: {fileID: 0} 311 | terrainQualityOverrides: 0 312 | terrainPixelError: 1 313 | terrainDetailDensityScale: 1 314 | terrainBasemapDistance: 1000 315 | terrainDetailDistance: 80 316 | terrainTreeDistance: 5000 317 | terrainBillboardStart: 50 318 | terrainFadeLength: 5 319 | terrainMaxTrees: 50 320 | excludedTargetPlatforms: [] 321 | m_TextureMipmapLimitGroupNames: [] 322 | m_PerPlatformDefaultQuality: 323 | Android: 2 324 | EmbeddedLinux: 5 325 | GameCoreScarlett: 5 326 | GameCoreXboxOne: 5 327 | LinuxHeadlessSimulation: 5 328 | Nintendo Switch: 5 329 | PS4: 5 330 | PS5: 5 331 | QNX: 5 332 | ReservedCFE: 5 333 | Server: 5 334 | Standalone: 5 335 | VisionOS: 5 336 | WebGL: 3 337 | Windows Store Apps: 5 338 | XboxOne: 5 339 | iPhone: 2 340 | tvOS: 2 341 | -------------------------------------------------------------------------------- /ProjectSettings/SceneTemplateSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "templatePinStates": [], 3 | "dependencyTypeInfos": [ 4 | { 5 | "userAdded": false, 6 | "type": "UnityEngine.AnimationClip", 7 | "defaultInstantiationMode": 0 8 | }, 9 | { 10 | "userAdded": false, 11 | "type": "UnityEditor.Animations.AnimatorController", 12 | "defaultInstantiationMode": 0 13 | }, 14 | { 15 | "userAdded": false, 16 | "type": "UnityEngine.AnimatorOverrideController", 17 | "defaultInstantiationMode": 0 18 | }, 19 | { 20 | "userAdded": false, 21 | "type": "UnityEditor.Audio.AudioMixerController", 22 | "defaultInstantiationMode": 0 23 | }, 24 | { 25 | "userAdded": false, 26 | "type": "UnityEngine.ComputeShader", 27 | "defaultInstantiationMode": 1 28 | }, 29 | { 30 | "userAdded": false, 31 | "type": "UnityEngine.Cubemap", 32 | "defaultInstantiationMode": 0 33 | }, 34 | { 35 | "userAdded": false, 36 | "type": "UnityEngine.GameObject", 37 | "defaultInstantiationMode": 0 38 | }, 39 | { 40 | "userAdded": false, 41 | "type": "UnityEditor.LightingDataAsset", 42 | "defaultInstantiationMode": 0 43 | }, 44 | { 45 | "userAdded": false, 46 | "type": "UnityEngine.LightingSettings", 47 | "defaultInstantiationMode": 0 48 | }, 49 | { 50 | "userAdded": false, 51 | "type": "UnityEngine.Material", 52 | "defaultInstantiationMode": 0 53 | }, 54 | { 55 | "userAdded": false, 56 | "type": "UnityEditor.MonoScript", 57 | "defaultInstantiationMode": 1 58 | }, 59 | { 60 | "userAdded": false, 61 | "type": "UnityEngine.PhysicsMaterial", 62 | "defaultInstantiationMode": 0 63 | }, 64 | { 65 | "userAdded": false, 66 | "type": "UnityEngine.PhysicsMaterial2D", 67 | "defaultInstantiationMode": 0 68 | }, 69 | { 70 | "userAdded": false, 71 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", 72 | "defaultInstantiationMode": 0 73 | }, 74 | { 75 | "userAdded": false, 76 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", 77 | "defaultInstantiationMode": 0 78 | }, 79 | { 80 | "userAdded": false, 81 | "type": "UnityEngine.Rendering.VolumeProfile", 82 | "defaultInstantiationMode": 0 83 | }, 84 | { 85 | "userAdded": false, 86 | "type": "UnityEditor.SceneAsset", 87 | "defaultInstantiationMode": 1 88 | }, 89 | { 90 | "userAdded": false, 91 | "type": "UnityEngine.Shader", 92 | "defaultInstantiationMode": 1 93 | }, 94 | { 95 | "userAdded": false, 96 | "type": "UnityEngine.ShaderVariantCollection", 97 | "defaultInstantiationMode": 1 98 | }, 99 | { 100 | "userAdded": false, 101 | "type": "UnityEngine.Texture", 102 | "defaultInstantiationMode": 0 103 | }, 104 | { 105 | "userAdded": false, 106 | "type": "UnityEngine.Texture2D", 107 | "defaultInstantiationMode": 0 108 | }, 109 | { 110 | "userAdded": false, 111 | "type": "UnityEngine.Timeline.TimelineAsset", 112 | "defaultInstantiationMode": 0 113 | } 114 | ], 115 | "defaultDependencyTypeInfo": { 116 | "userAdded": false, 117 | "type": "", 118 | "defaultInstantiationMode": 1 119 | }, 120 | "newSceneOverride": 0 121 | } -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 3 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | m_RenderingLayers: 45 | - Default 46 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 7 | m_Count: 2822399 8 | m_Rate: 9 | m_Denominator: 1 10 | m_Numerator: 141120000 11 | Maximum Allowed Timestep: 0.33333334 12 | m_TimeScale: 1 13 | Maximum Particle Timestep: 0.03 14 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_DashboardUrl: https://dashboard.unity3d.com 13 | m_TestInitMode: 0 14 | CrashReportingSettings: 15 | m_EventUrl: https://perf-events.cloud.unity3d.com 16 | m_Enabled: 0 17 | m_LogBufferSize: 10 18 | m_CaptureEditorExceptions: 1 19 | UnityPurchasingSettings: 20 | m_Enabled: 0 21 | m_TestMode: 0 22 | UnityAnalyticsSettings: 23 | m_Enabled: 0 24 | m_TestMode: 0 25 | m_InitializeOnStartup: 1 26 | m_PackageRequiringCoreStatsPresent: 0 27 | UnityAdsSettings: 28 | m_Enabled: 0 29 | m_InitializeOnStartup: 1 30 | m_TestMode: 0 31 | m_IosGameId: 32 | m_AndroidGameId: 33 | m_GameIds: {} 34 | m_GameId: 35 | PerformanceReportingSettings: 36 | m_Enabled: 0 37 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_EmptyShader: {fileID: 0} 11 | m_RenderPipeSettingsPath: 12 | m_FixedTimeStep: 0.016666668 13 | m_MaxDeltaTime: 0.05 14 | m_MaxScrubTime: 30 15 | m_MaxCapacity: 100000000 16 | m_CompiledVersion: 0 17 | m_RuntimeVersion: 0 18 | m_RuntimeResources: {fileID: 0} 19 | m_BatchEmptyLifetime: 300 20 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_TrackPackagesOutsideProject: 0 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity + EFCore + SQLite = ❤️ 2 | 3 | [![openupm](https://img.shields.io/npm/v/extensions.unity.bundle.efcore.sqlite?label=openupm®istry_uri=https://package.openupm.com)](https://openupm.com/packages/extensions.unity.bundle.efcore.sqlite/) ![License](https://img.shields.io/github/license/IvanMurzak/Unity-EFCore-SQLite) [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua) 4 | 5 | Ready to go bundle package that includes references on [EntityFrameworkCore](https://github.com/dotnet/efcore) and [SQLitePCLRaw](https://github.com/ericsink/SQLitePCL.raw) packages that just works in this combination for the next platforms: 6 | 7 | Supports AOT an JIT compilation. For AOT it uses nested `link.xml` file to exclude required classes from stripping. 8 | 9 | ## Supported project settings 10 | 11 | ### Platform 12 | 13 | - ✔️ Windows 14 | - ✔️ Android 15 | - ✔️ iOS 16 | - ✔️ MacOS 17 | - Others not yet tested 18 | 19 | ### Scripting backend 20 | 21 | - ❌ `Mono` 22 | - ✔️ `IL2CPP` 23 | 24 | ### API Compatibility 25 | 26 | - ❌ `.NET Framework` 27 | - ✔️ `.NET Standard 2.0` 28 | - ✔️ `.NET Standard 2.1` 29 | 30 | Then use EFCore as usual. 31 | 32 | # Installation 33 | 34 | - [Install OpenUPM-CLI](https://github.com/openupm/openupm-cli#installation) 35 | - Open command line in Unity project folder 36 | - Run the command 37 | 38 | ``` CLI 39 | openupm add extensions.unity.bundle.efcore.sqlite 40 | ``` 41 | 42 | # Usage 43 | 44 | ## Option 1: Explicit (Recommended) 45 | 46 | Use this approach to setup your database and establish connection. 47 | 48 | ### 1. Create data model `LevelData.cs` 49 | 50 | ```csharp 51 | using System.ComponentModel.DataAnnotations; 52 | 53 | public class LevelData 54 | { 55 | [Key] 56 | public int Id { get; set; } 57 | [StringLength(100)] 58 | public string Name { get; set; } 59 | [Range(1, 10)] 60 | public int Difficulty { get; set; } 61 | public string Description { get; set; } 62 | } 63 | ``` 64 | 65 | ### 2. Create `SQLiteContext.cs` 66 | 67 | ```csharp 68 | using Microsoft.EntityFrameworkCore; 69 | 70 | public class SQLiteContext : DbContext 71 | { 72 | // sample table of levels in your database 73 | public DbSet Levels { get; set; } 74 | 75 | public SQLiteContext() : base() { } 76 | public SQLiteContext(DbContextOptions options) : base(options) { } 77 | 78 | protected override void OnModelCreating(ModelBuilder builder) 79 | { 80 | base.OnModelCreating(builder); 81 | builder.Entity(); 82 | 83 | // To define relationships between tables, configure navigation properties and use Fluent API. 84 | // Refer to the official EF Core documentation: https://learn.microsoft.com/en-us/ef/core/modeling/relationships 85 | // To generate code automatically, use the EF Core CLI tools. For example: 86 | // dotnet ef migrations add 87 | // dotnet ef database update 88 | } 89 | } 90 | ``` 91 | 92 | ### 3. Create `SQLiteContextFactory.cs` 93 | 94 | ```csharp 95 | using Microsoft.EntityFrameworkCore; 96 | 97 | public class SQLiteContextFactory : EFCoreSQLiteBundle.SQLiteContextFactory 98 | { 99 | public SQLiteContextFactory() : base(UnityEngine.Application.persistentDataPath, "data.db") 100 | { 101 | // Optional logging 102 | UnityEngine.Debug.Log($"Using database: {DataSource}"); 103 | } 104 | 105 | protected override SQLiteContext InternalCreateDbContext(DbContextOptions optionsBuilder) 106 | { 107 | return new SQLiteContext(optionsBuilder); 108 | } 109 | } 110 | ``` 111 | 112 | The `EFCoreSQLiteBundle.SQLiteContextFactory` class under the hood executes `SQLitePCLRaw.Startup.Setup();` for proper SQLite setup depends on the current platform. 113 | 114 | ### 4. Create database context 115 | 116 | ```csharp 117 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 118 | { 119 | // use it for data manipulations 120 | // sample: 121 | var level_1 = dbContext.Levels.FirstOrDefault(level => level.Id == 1); 122 | } 123 | ``` 124 | 125 | There is full usage sample in this source code: 126 | 127 | ```csharp 128 | using System.Linq; 129 | using UnityEngine; 130 | 131 | public class DatabaseOperations : MonoBehaviour 132 | { 133 | void Awake() 134 | { 135 | AddLevel("Level 1", 1, "Easy level"); 136 | AddLevel("Level 2", 2, "Medium level"); 137 | AddLevel("Level 3", 3, "Hard level"); 138 | 139 | PrintAllLevels(); 140 | } 141 | 142 | void AddLevel(string name, int difficulty, string description) 143 | { 144 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 145 | { 146 | var level = new LevelData 147 | { 148 | Name = name, 149 | Difficulty = difficulty, 150 | Description = description 151 | }; 152 | dbContext.Levels.Add(level); 153 | dbContext.SaveChanges(); 154 | } 155 | Debug.Log($"Added Level: {name}, Difficulty: {difficulty}"); 156 | } 157 | void PrintAllLevels() 158 | { 159 | using (var dbContext = new SQLiteContextFactory().CreateDbContext()) 160 | { 161 | var levels = dbContext.Levels.ToList(); 162 | foreach (var level in levels) 163 | Debug.Log($"Level ID: {level.Id}, Name: {level.Name}, Difficulty: {level.Difficulty}"); 164 | } 165 | } 166 | } 167 | ``` 168 | 169 | --- 170 | 171 | ## Option 2: Minimalistic 172 | 173 | Use this option if you well understand how to operate with EFCore on your own. 174 | 175 | Call the function once at app startup. Important to do that before opening SQLite connection. This method call prepares SQLite. 176 | 177 | ```csharp 178 | SQLitePCLRaw.Startup.Setup(); 179 | ``` 180 | 181 | --- 182 | 183 | # Helpful information 184 | 185 | Read more how to use [EntityFrameworkCore](https://learn.microsoft.com/en-us/ef/ef6/get-started?redirectedfrom=MSDN). My favorite approach is `Code First`. 186 | Please keep in mind. Because of Unity's .NET Standard 2.1 restrictions we are only limited to use the old version of EntityFrameworkCore 5.0.17. Newer versions require newer .NET version which Unity doesn't support yet. Anyway the version 5.0.17 is a good one for sure! 187 | -------------------------------------------------------------------------------- /UserSettings/EditorUserSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!162 &1 4 | EditorUserSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_ConfigSettings: 8 | GraphicsSettingsInspector_UserSettings: 9 | value: 18134705175a055722080a3115371d4a0d55006876786860616b0471b8b07a68ffab74f9ee2a3a30300cea1a11320d0beb1a0c25f7060f494b4cdf1b18f3045e38cb5ad8 10 | flags: 0 11 | RecentlyUsedSceneGuid-0: 12 | value: 5a5352045d040a085b5c557014770744134e1a7b7f7827697f2d1e64b4b33568 13 | flags: 0 14 | RecentlyUsedSceneGuid-1: 15 | value: 52570405540208035c59597240265b4414164c7b282b7e3628714f30bbe36768 16 | flags: 0 17 | vcSharedLogLevel: 18 | value: 0d5e400f0650 19 | flags: 0 20 | m_VCAutomaticAdd: 1 21 | m_VCDebugCom: 0 22 | m_VCDebugCmd: 0 23 | m_VCDebugOut: 0 24 | m_SemanticMergeMode: 2 25 | m_DesiredImportWorkerCount: 8 26 | m_StandbyImportWorkerCount: 2 27 | m_IdleImportWorkerShutdownDelay: 60000 28 | m_VCShowFailedCheckout: 1 29 | m_VCOverwriteFailedCheckoutAssets: 1 30 | m_VCProjectOverlayIcons: 1 31 | m_VCHierarchyOverlayIcons: 1 32 | m_VCOtherOverlayIcons: 1 33 | m_VCAllowAsyncUpdate: 1 34 | m_VCScanLocalPackagesOnConnect: 1 35 | m_ArtifactGarbageCollection: 1 36 | m_CompressAssetsOnImport: 1 37 | -------------------------------------------------------------------------------- /UserSettings/Search.index: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Assets", 3 | "roots": ["Assets"], 4 | "includes": [], 5 | "excludes": ["Assets/Temp/", "Assets/External/"], 6 | "options": { 7 | "types": true, 8 | "properties": true, 9 | "extended": false, 10 | "dependencies": true 11 | }, 12 | "baseScore": 999 13 | } -------------------------------------------------------------------------------- /UserSettings/Search.settings: -------------------------------------------------------------------------------- 1 | trackSelection = true 2 | refreshSearchWindowsInPlayMode = false 3 | pickerAdvancedUI = false 4 | fetchPreview = true 5 | defaultFlags = 0 6 | keepOpen = true 7 | queryFolder = "Assets" 8 | onBoardingDoNotAskAgain = true 9 | showPackageIndexes = false 10 | showStatusBar = false 11 | scopes = { 12 | } 13 | providers = { 14 | asset = { 15 | active = true 16 | priority = 25 17 | defaultAction = null 18 | } 19 | scene = { 20 | active = true 21 | priority = 50 22 | defaultAction = null 23 | } 24 | adb = { 25 | active = false 26 | priority = 2500 27 | defaultAction = null 28 | } 29 | presets_provider = { 30 | active = false 31 | priority = -10 32 | defaultAction = null 33 | } 34 | find = { 35 | active = true 36 | priority = 25 37 | defaultAction = null 38 | } 39 | packages = { 40 | active = false 41 | priority = 90 42 | defaultAction = null 43 | } 44 | store = { 45 | active = false 46 | priority = 100 47 | defaultAction = null 48 | } 49 | profilermarkers = { 50 | active = false 51 | priority = 100 52 | defaultAction = null 53 | } 54 | performance = { 55 | active = false 56 | priority = 100 57 | defaultAction = null 58 | } 59 | log = { 60 | active = false 61 | priority = 210 62 | defaultAction = null 63 | } 64 | } 65 | objectSelectors = { 66 | } 67 | recentSearches = [ 68 | ] 69 | searchItemFavorites = [ 70 | ] 71 | savedSearchesSortOrder = 0 72 | showSavedSearchPanel = false 73 | hideTabs = false 74 | expandedQueries = [ 75 | ] 76 | queryBuilder = true 77 | ignoredProperties = "id;name;classname;imagecontentshash" 78 | helperWidgetCurrentArea = "all" 79 | disabledIndexers = "" 80 | minIndexVariations = 2 81 | findProviderIndexHelper = true -------------------------------------------------------------------------------- /efcore_sqlite.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvanMurzak/Unity-EFCore-SQLite/e9493faf9239d9d3fe25f268d7c59a4d8c49f1be/efcore_sqlite.jpg -------------------------------------------------------------------------------- /gitSubTreePushToUPM.bat: -------------------------------------------------------------------------------- 1 | git subtree push --prefix Assets/_PackageRoot origin upm 2 | pause -------------------------------------------------------------------------------- /gitSubTreePushToUPM.makefile: -------------------------------------------------------------------------------- 1 | deploy: 2 | git subtree push --prefix Assets/_PackageRoot origin upm --------------------------------------------------------------------------------