├── .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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 |  [](https://openupm.com/packages/extensions.unity.bundle.efcore.sqlite/)  [](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 |  [](https://openupm.com/packages/extensions.unity.bundle.efcore.sqlite/)  [](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 | [](https://openupm.com/packages/extensions.unity.bundle.efcore.sqlite/)  [](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
--------------------------------------------------------------------------------