diff --git a/example_unity_6000_0_project/.gitignore b/example_unity_6000_0_project/.gitignore new file mode 100644 index 0000000..58cbc82 --- /dev/null +++ b/example_unity_6000_0_project/.gitignore @@ -0,0 +1,72 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Uu]ser[Ss]ettings/ + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data +/[Mm]emoryCaptures/ + +# Recordings can get excessive in size +/[Rr]ecordings/ + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.aab +*.unitypackage +*.app + +# Crashlytics generated file +crashlytics-build.properties + +# Packed Addressables +/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* + +# Temporary auto-generated Android Assets +/[Aa]ssets/[Ss]treamingAssets/aa.meta +/[Aa]ssets/[Ss]treamingAssets/aa/* diff --git a/example_unity_6000_0_project/Assets/DefaultVolumeProfile.asset b/example_unity_6000_0_project/Assets/DefaultVolumeProfile.asset new file mode 100644 index 0000000..36c3781 --- /dev/null +++ b/example_unity_6000_0_project/Assets/DefaultVolumeProfile.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: DefaultVolumeProfile + m_EditorClassIdentifier: + components: [] diff --git a/example_unity_6000_0_project/Assets/DefaultVolumeProfile.asset.meta b/example_unity_6000_0_project/Assets/DefaultVolumeProfile.asset.meta new file mode 100644 index 0000000..11eb7a5 --- /dev/null +++ b/example_unity_6000_0_project/Assets/DefaultVolumeProfile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3e9ad90b4ae08f843b46ecf6ee5ae65c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example.meta b/example_unity_6000_0_project/Assets/Example.meta new file mode 100644 index 0000000..2d53412 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3de44fcb338bb6249a4db35e6e46ec26 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Materials.meta b/example_unity_6000_0_project/Assets/Example/Materials.meta new file mode 100644 index 0000000..1a71826 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a52cc450e6c595246b8e2a06bcb2afef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Materials/ArPlaneMaterial.mat b/example_unity_6000_0_project/Assets/Example/Materials/ArPlaneMaterial.mat new file mode 100644 index 0000000..2274d31 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Materials/ArPlaneMaterial.mat @@ -0,0 +1,139 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ArPlaneMaterial + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHAPREMULTIPLY_ON + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - DepthOnly + - SHADOWCASTER + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 0.9449338, b: 0, a: 0.47058824} + - _Color: {r: 1, g: 0.9449338, b: 0, a: 0.47058824} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &1756718029480707733 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/example_unity_6000_0_project/Assets/Example/Materials/ArPlaneMaterial.mat.meta b/example_unity_6000_0_project/Assets/Example/Materials/ArPlaneMaterial.mat.meta new file mode 100644 index 0000000..05efaf6 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Materials/ArPlaneMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fb7195381453adf4290ce2bccbfcaa6c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Materials/FlutterBlueMaterial.mat b/example_unity_6000_0_project/Assets/Example/Materials/FlutterBlueMaterial.mat new file mode 100644 index 0000000..15fac18 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Materials/FlutterBlueMaterial.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-5126043731411455235 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FlutterBlueMaterial + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.37254903, g: 0.7882353, b: 0.972549, a: 1} + - _Color: {r: 0.372549, g: 0.7882353, b: 0.972549, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/example_unity_6000_0_project/Assets/Example/Materials/FlutterBlueMaterial.mat.meta b/example_unity_6000_0_project/Assets/Example/Materials/FlutterBlueMaterial.mat.meta new file mode 100644 index 0000000..f4f54a0 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Materials/FlutterBlueMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6927ad1380a658149b878d31607a3f74 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Materials/FlutterDarkBlueMaterial.mat b/example_unity_6000_0_project/Assets/Example/Materials/FlutterDarkBlueMaterial.mat new file mode 100644 index 0000000..48beae5 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Materials/FlutterDarkBlueMaterial.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FlutterDarkBlueMaterial + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.02745098, g: 0.35686275, b: 0.6156863, a: 1} + - _Color: {r: 0.02745098, g: 0.35686272, b: 0.6156863, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6980787164001548945 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/example_unity_6000_0_project/Assets/Example/Materials/FlutterDarkBlueMaterial.mat.meta b/example_unity_6000_0_project/Assets/Example/Materials/FlutterDarkBlueMaterial.mat.meta new file mode 100644 index 0000000..46080fa --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Materials/FlutterDarkBlueMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cc82d30904392a94e92b3bad70bf029f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Materials/FlutterLightBlueMaterial.mat b/example_unity_6000_0_project/Assets/Example/Materials/FlutterLightBlueMaterial.mat new file mode 100644 index 0000000..0517fd2 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Materials/FlutterLightBlueMaterial.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FlutterLightBlueMaterial + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.35686275, g: 0.78431374, b: 0.972549, a: 1} + - _Color: {r: 0.35686272, g: 0.78431374, b: 0.972549, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &8225062045183340367 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/example_unity_6000_0_project/Assets/Example/Materials/FlutterLightBlueMaterial.mat.meta b/example_unity_6000_0_project/Assets/Example/Materials/FlutterLightBlueMaterial.mat.meta new file mode 100644 index 0000000..be92faa --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Materials/FlutterLightBlueMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8a90a968be9e8fa49949dd9442ef852d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Models.meta b/example_unity_6000_0_project/Assets/Example/Models.meta new file mode 100644 index 0000000..7a49ae5 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5c8c034ce436b924dadd286bc418e56f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Models/flutter_logo.fbx b/example_unity_6000_0_project/Assets/Example/Models/flutter_logo.fbx new file mode 100644 index 0000000..5b914ff Binary files /dev/null and b/example_unity_6000_0_project/Assets/Example/Models/flutter_logo.fbx differ diff --git a/example_unity_6000_0_project/Assets/Example/Models/flutter_logo.fbx.meta b/example_unity_6000_0_project/Assets/Example/Models/flutter_logo.fbx.meta new file mode 100644 index 0000000..fdaa8ca --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Models/flutter_logo.fbx.meta @@ -0,0 +1,109 @@ +fileFormatVersion: 2 +guid: 2f2dbcc0c367ef442b000a96f0ef0e32 +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Prefabs.meta b/example_unity_6000_0_project/Assets/Example/Prefabs.meta new file mode 100644 index 0000000..2b19462 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3184c5bf128bc054abfd2c5a53216f5d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Prefabs/AR Default Plane.prefab b/example_unity_6000_0_project/Assets/Example/Prefabs/AR Default Plane.prefab new file mode 100644 index 0000000..b07d020 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Prefabs/AR Default Plane.prefab @@ -0,0 +1,243 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2553029767478451752 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4678560057900861793} + - component: {fileID: 8486827694134425628} + - component: {fileID: 3907180464993917001} + - component: {fileID: 5071330697571825710} + - component: {fileID: 87141031673764529} + - component: {fileID: 4577023721811499269} + - component: {fileID: 483641966243855547} + m_Layer: 0 + m_Name: AR Default Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4678560057900861793 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2553029767478451752} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.27621377, y: 0.6720215, z: -0.19427466} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8486827694134425628 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2553029767478451752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f66da7470dce8f4d821d71dd2b1d4ac, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DestroyOnRemoval: 1 + m_VertexChangedThreshold: 0.01 +--- !u!114 &3907180464993917001 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2553029767478451752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d180956a54db4646a1c6342921672ad, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackingStateVisibilityThreshold: 1 + m_HideSubsumed: 1 +--- !u!64 &5071330697571825710 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2553029767478451752} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 0} +--- !u!33 &87141031673764529 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2553029767478451752} + m_Mesh: {fileID: 0} +--- !u!23 &4577023721811499269 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2553029767478451752} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fb7195381453adf4290ce2bccbfcaa6c, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!120 &483641966243855547 +LineRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2553029767478451752} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 1} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.005 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 0, g: 0, b: 0, a: 1} + key1: {r: 0, g: 0, b: 0, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 4 + numCapVertices: 4 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MaskInteraction: 0 + m_UseWorldSpace: 0 + m_Loop: 1 + m_ApplyActiveColorSpace: 1 diff --git a/example_unity_6000_0_project/Assets/Example/Prefabs/AR Default Plane.prefab.meta b/example_unity_6000_0_project/Assets/Example/Prefabs/AR Default Plane.prefab.meta new file mode 100644 index 0000000..0c5cab9 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Prefabs/AR Default Plane.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 085ad6d55697d934180a21821ee8ec69 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Prefabs/FlutterLogo.prefab b/example_unity_6000_0_project/Assets/Example/Prefabs/FlutterLogo.prefab new file mode 100644 index 0000000..9f40b5d --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Prefabs/FlutterLogo.prefab @@ -0,0 +1,347 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3065968244710325712 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6666068512039603321} + - component: {fileID: 163675836641885035} + - component: {fileID: 3179096514357416145} + - component: {fileID: 390260722482482730} + m_Layer: 0 + m_Name: FlutterLogo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6666068512039603321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3065968244710325712} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6074400388820725609} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &163675836641885035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3065968244710325712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0a98ab02fef424f488977159bd6fa420, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &3179096514357416145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3065968244710325712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 915b1b9c07848394c9932bfc30eeda64, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &390260722482482730 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3065968244710325712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 358915f3f06aba9418a6baec89c1f77a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &6036551405372311682 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 6666068512039603321} + m_Modifications: + - target: {fileID: -9071624046216249438, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: cc82d30904392a94e92b3bad70bf029f, type: 2} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalScale.x + value: 12.698189 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalScale.y + value: 12.698189 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalScale.z + value: 12.698189 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.543 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalPosition.y + value: 1.29 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.349 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.29869792 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.9543477 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 145.241 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -6356483016896457778, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: cc82d30904392a94e92b3bad70bf029f, type: 2} + - target: {fileID: -3855335175272487014, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 6927ad1380a658149b878d31607a3f74, type: 2} + - target: {fileID: 919132149155446097, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_Name + value: flutter_logo + objectReference: {fileID: 0} + - target: {fileID: 1797760339730403953, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 6927ad1380a658149b878d31607a3f74, type: 2} + - target: {fileID: 5437679451551056649, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 8a90a968be9e8fa49949dd9442ef852d, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: -3372522033569347474, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + insertIndex: -1 + addedObject: {fileID: 531441349722821820} + - targetCorrespondingSourceObject: {fileID: -1817752537321972114, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + insertIndex: -1 + addedObject: {fileID: 404577655061901830} + - targetCorrespondingSourceObject: {fileID: -6935687079284805244, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + insertIndex: -1 + addedObject: {fileID: 8655195986154025563} + - targetCorrespondingSourceObject: {fileID: 9175552907236278165, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1543377301618588663} + - targetCorrespondingSourceObject: {fileID: -4845419198383733991, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1205746869979710125} + m_SourcePrefab: {fileID: 100100000, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, type: 3} +--- !u!1 &212872671085576428 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: -3372522033569347474, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + m_PrefabInstance: {fileID: 6036551405372311682} + m_PrefabAsset: {fileID: 0} +--- !u!64 &531441349722821820 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212872671085576428} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 8604045607132181640, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, type: 3} +--- !u!1 &3211136097417754391 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 9175552907236278165, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + m_PrefabInstance: {fileID: 6036551405372311682} + m_PrefabAsset: {fileID: 0} +--- !u!64 &1543377301618588663 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3211136097417754391} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 8130605235924166793, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, type: 3} +--- !u!1 &3819096703160669932 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: -1817752537321972114, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + m_PrefabInstance: {fileID: 6036551405372311682} + m_PrefabAsset: {fileID: 0} +--- !u!64 &404577655061901830 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3819096703160669932} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 5358915128574053833, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, type: 3} +--- !u!1 &5510539918258764038 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: -6935687079284805244, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + m_PrefabInstance: {fileID: 6036551405372311682} + m_PrefabAsset: {fileID: 0} +--- !u!64 &8655195986154025563 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5510539918258764038} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 6679289703562662588, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, type: 3} +--- !u!4 &6074400388820725609 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + m_PrefabInstance: {fileID: 6036551405372311682} + m_PrefabAsset: {fileID: 0} +--- !u!1 &8000573735467797403 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: -4845419198383733991, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, + type: 3} + m_PrefabInstance: {fileID: 6036551405372311682} + m_PrefabAsset: {fileID: 0} +--- !u!64 &1205746869979710125 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8000573735467797403} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: -8849623128070449534, guid: 2f2dbcc0c367ef442b000a96f0ef0e32, type: 3} diff --git a/example_unity_6000_0_project/Assets/Example/Prefabs/FlutterLogo.prefab.meta b/example_unity_6000_0_project/Assets/Example/Prefabs/FlutterLogo.prefab.meta new file mode 100644 index 0000000..d290339 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Prefabs/FlutterLogo.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 46db9d94d4ae7a34bbcd842645db20ad +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Prefabs/SceneSwitcher.prefab b/example_unity_6000_0_project/Assets/Example/Prefabs/SceneSwitcher.prefab new file mode 100644 index 0000000..4fbb6db --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Prefabs/SceneSwitcher.prefab @@ -0,0 +1,46 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2643319947954567027 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4797030649323203259} + - component: {fileID: -1367730357914954303} + m_Layer: 0 + m_Name: SceneSwitcher + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4797030649323203259 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2643319947954567027} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.27621377, y: 0.6720215, z: -0.19427466} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &-1367730357914954303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2643319947954567027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1478ccf15aa1bd14ab8c9b9f82e35835, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/example_unity_6000_0_project/Assets/Example/Prefabs/SceneSwitcher.prefab.meta b/example_unity_6000_0_project/Assets/Example/Prefabs/SceneSwitcher.prefab.meta new file mode 100644 index 0000000..2feb81a --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Prefabs/SceneSwitcher.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1dd3a10ef477c0a4c946a71272190a92 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Scenes.meta b/example_unity_6000_0_project/Assets/Example/Scenes.meta new file mode 100644 index 0000000..e27358b --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 50e6608302f98924491bb8e9ba5383bd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleScene.unity b/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleScene.unity new file mode 100644 index 0000000..41daadf --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleScene.unity @@ -0,0 +1,666 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.12731749, g: 0.13414757, b: 0.1210787, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &145618937 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 145618941} + - component: {fileID: 145618940} + - component: {fileID: 145618939} + - component: {fileID: 145618938} + m_Layer: 0 + m_Name: AR Session (for checking AR availability) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &145618938 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145618937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 96b150af282ad0a48a2796f44816682a, type: 3} + m_Name: + m_EditorClassIdentifier: + arSession: {fileID: 145618940} +--- !u!114 &145618939 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145618937} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fa850fbd5b8aded44846f96e35f1a9f5, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &145618940 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145618937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3859a92a05d4f5d418cb6ca605290e74, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AttemptUpdate: 1 + m_MatchFrameRate: 1 + m_TrackingMode: 2 +--- !u!4 &145618941 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145618937} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.27621377, y: 0.6720215, z: -0.19427466} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &196775531 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2643319947954567027, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_Name + value: SceneSwitcher + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.27621377 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.6720215 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.19427466 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 1dd3a10ef477c0a4c946a71272190a92, type: 3} +--- !u!1 &330585543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 330585546} + - component: {fileID: 330585545} + - component: {fileID: 330585544} + - component: {fileID: 330585547} + - component: {fileID: 330585548} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &330585544 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + m_Enabled: 1 +--- !u!20 &330585545 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &330585546 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + serializedVersion: 2 + m_LocalRotation: {x: 0.20062196, y: -0, z: -0, w: 0.9796688} + m_LocalPosition: {x: 0, y: 1.907, z: -1.95} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 23.147, y: 0, z: 0} +--- !u!114 &330585547 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + quality: 3 + frameInfluence: 0.1 + jitterScale: 1 + mipBias: 0 + varianceClampScale: 0.9 + contrastAdaptiveSharpening: 0 +--- !u!114 &330585548 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 56666c5a40171f54783dd416a44f42bf, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EventMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_MaxRayIntersections: 0 +--- !u!1 &819201746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 819201749} + - component: {fileID: 819201748} + - component: {fileID: 819201747} + m_Layer: 0 + m_Name: Point Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &819201747 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819201746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!108 &819201748 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819201746} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &819201749 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819201746} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.0017579794, y: 0.91, z: -0.68} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &832575517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 832575519} + - component: {fileID: 832575518} + m_Layer: 0 + m_Name: Global Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &832575518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832575517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IsGlobal: 1 + priority: 0 + blendDistance: 0 + weight: 1 + sharedProfile: {fileID: 11400000, guid: a6560a915ef98420e9faacc1c7438823, type: 2} +--- !u!4 &832575519 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832575517} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &7484340895990840762 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3065968244710325712, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_Name + value: FlutterLogo + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.435 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.304 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.9961777 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.087350294 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -10.022 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 46db9d94d4ae7a34bbcd842645db20ad, type: 3} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 330585546} + - {fileID: 832575519} + - {fileID: 819201749} + - {fileID: 7484340895990840762} + - {fileID: 196775531} + - {fileID: 145618941} diff --git a/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleScene.unity.meta b/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleScene.unity.meta new file mode 100644 index 0000000..9531828 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 99c9720ab356a0642a771bea13969a05 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleSceneAR.unity b/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleSceneAR.unity new file mode 100644 index 0000000..f7b2bfe --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleSceneAR.unity @@ -0,0 +1,887 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &228516971 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 228516972} + m_Layer: 0 + m_Name: Camera Offset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &228516972 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228516971} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 677467337} + m_Father: {fileID: 1215624106} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &677467336 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 677467337} + - component: {fileID: 677467343} + - component: {fileID: 677467342} + - component: {fileID: 677467341} + - component: {fileID: 677467340} + - component: {fileID: 677467339} + - component: {fileID: 677467338} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &677467337 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677467336} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 228516972} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &677467338 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677467336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + quality: 3 + frameInfluence: 0.1 + jitterScale: 1 + mipBias: 0 + varianceClampScale: 0.9 + contrastAdaptiveSharpening: 0 +--- !u!114 &677467339 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677467336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c2fadf230d1919748a9aa21d40f74619, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackingType: 0 + m_UpdateType: 0 + m_IgnoreTrackingState: 0 + m_PositionInput: + m_UseReference: 0 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: Vector3 + m_Id: 5053cde5-f644-494b-b387-a88ca7c4c58d + m_Processors: + m_Interactions: + m_SingletonActionBindings: + - m_Name: + m_Id: 6618d43d-0b9b-4303-9ecc-655808bbd558 + m_Path: /centerEyePosition + m_Interactions: + m_Processors: + m_Groups: + m_Action: Position + m_Flags: 0 + - m_Name: + m_Id: 706db743-83f3-4bb5-9ea1-8afa71916be2 + m_Path: /devicePosition + m_Interactions: + m_Processors: + m_Groups: + m_Action: Position + m_Flags: 0 + m_Flags: 0 + m_Reference: {fileID: 0} + m_RotationInput: + m_UseReference: 0 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: Quaternion + m_Id: 40b86ad9-1f59-4fc4-b516-702bc58a5bf3 + m_Processors: + m_Interactions: + m_SingletonActionBindings: + - m_Name: + m_Id: e88d49e3-0953-4013-b6dc-b168824b40d3 + m_Path: /centerEyeRotation + m_Interactions: + m_Processors: + m_Groups: + m_Action: Rotation + m_Flags: 0 + - m_Name: + m_Id: 03e21bb1-4e9f-4499-b776-dbb55f4ee8f6 + m_Path: /deviceRotation + m_Interactions: + m_Processors: + m_Groups: + m_Action: Rotation + m_Flags: 0 + m_Flags: 0 + m_Reference: {fileID: 0} + m_TrackingStateInput: + m_UseReference: 0 + m_Action: + m_Name: Tracking State + m_Type: 0 + m_ExpectedControlType: Integer + m_Id: 6d5eac6c-ca08-4e8f-a330-7b3cc5ee978a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_Reference: {fileID: 0} + m_PositionAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_RotationAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_HasMigratedActions: 1 +--- !u!114 &677467340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677467336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 816b289ef451e094f9ae174fb4cf8db0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UseCustomMaterial: 0 + m_CustomMaterial: {fileID: 0} +--- !u!114 &677467341 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677467336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4966719baa26e4b0e8231a24d9bd491a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FocusMode: -1 + m_LightEstimationMode: -1 + m_AutoFocus: 1 + m_LightEstimation: 0 + m_FacingDirection: 1 + m_RenderMode: 0 +--- !u!81 &677467342 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677467336} + m_Enabled: 1 +--- !u!20 &677467343 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677467336} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.1 + far clip plane: 20 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!1 &740952427 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 740952429} + - component: {fileID: 740952428} + m_Layer: 0 + m_Name: AR Logo pinner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &740952428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740952427} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 35d4f5085f62615478052ef5c57bbc1c, type: 3} + m_Name: + m_EditorClassIdentifier: + raycastManager: {fileID: 1215624103} + flutterLogo: {fileID: 1035040901} +--- !u!4 &740952429 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740952427} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.27621377, y: 0.6720215, z: -0.19427466} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1035040900 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3065968244710325712, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_Name + value: FlutterLogo + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.867 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6666068512039603321, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 46db9d94d4ae7a34bbcd842645db20ad, type: 3} +--- !u!1 &1035040901 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3065968244710325712, guid: 46db9d94d4ae7a34bbcd842645db20ad, + type: 3} + m_PrefabInstance: {fileID: 1035040900} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1215624102 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1215624106} + - component: {fileID: 1215624105} + - component: {fileID: 1215624104} + - component: {fileID: 1215624103} + m_Layer: 0 + m_Name: XR Origin + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1215624103 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215624102} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fa17d122634046b4a8e23048891fafc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RaycastPrefab: {fileID: 0} +--- !u!114 &1215624104 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215624102} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e1760703bbd54c04488a8d10600262ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_PlanePrefab: {fileID: 2553029767478451752, guid: 085ad6d55697d934180a21821ee8ec69, + type: 3} + m_DetectionMode: -1 +--- !u!114 &1215624105 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215624102} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0cb9aa70a22847b5925ee5f067c10a9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Camera: {fileID: 677467343} + m_OriginBaseGameObject: {fileID: 1215624102} + m_CameraFloorOffsetObject: {fileID: 228516971} + m_RequestedTrackingOriginMode: 0 + m_CameraYOffset: 1.1176 +--- !u!4 &1215624106 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215624102} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.27621377, y: 0.6720215, z: -0.19427466} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 228516972} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1425830398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1425830401} + - component: {fileID: 1425830400} + - component: {fileID: 1425830399} + m_Layer: 0 + m_Name: AR Session + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1425830399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1425830398} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fa850fbd5b8aded44846f96e35f1a9f5, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1425830400 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1425830398} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3859a92a05d4f5d418cb6ca605290e74, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AttemptUpdate: 1 + m_MatchFrameRate: 1 + m_TrackingMode: 2 +--- !u!4 &1425830401 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1425830398} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.27621377, y: 0.6720215, z: -0.19427466} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2072791653 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2072791655} + - component: {fileID: 2072791654} + - component: {fileID: 2072791656} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &2072791654 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072791653} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &2072791655 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072791653} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!114 &2072791656 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072791653} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!1001 &7210088622489746464 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2643319947954567027, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_Name + value: SceneSwitcher + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.27621377 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.6720215 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.19427466 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4797030649323203259, guid: 1dd3a10ef477c0a4c946a71272190a92, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 1dd3a10ef477c0a4c946a71272190a92, type: 3} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 2072791655} + - {fileID: 1035040900} + - {fileID: 7210088622489746464} + - {fileID: 1425830401} + - {fileID: 1215624106} + - {fileID: 740952429} diff --git a/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleSceneAR.unity.meta b/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleSceneAR.unity.meta new file mode 100644 index 0000000..1fd9d7b --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scenes/FlutterEmbedExampleSceneAR.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c39b9dfab960f5f48bef5c5cb5ecc4b6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Scripts.meta b/example_unity_6000_0_project/Assets/Example/Scripts.meta new file mode 100644 index 0000000..7128733 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3c0cb5e9879f8b644a11c5fc2a7f55e5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/ARCheckAvailability.cs b/example_unity_6000_0_project/Assets/Example/Scripts/ARCheckAvailability.cs new file mode 100644 index 0000000..7250502 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/ARCheckAvailability.cs @@ -0,0 +1,40 @@ +using System.Collections; +using UnityEngine; +using UnityEngine.XR.ARFoundation; + +namespace Assets.Scripts +{ + public class ARCheckAvailability : MonoBehaviour + { + [SerializeField] ARSession arSession; + + void Start() + { + StartCoroutine(CheckAvailabilityCoroutine()); + } + + IEnumerator CheckAvailabilityCoroutine() { + + Debug.Log("ARCheckAvailability: check"); + + if ((ARSession.state == ARSessionState.None) || + (ARSession.state == ARSessionState.CheckingAvailability) || + (ARSession.state == ARSessionState.Installing)) + { + Debug.Log("ARCheckAvailability: checking..."); + yield return ARSession.CheckAvailability(); + } + + if (ARSession.state == ARSessionState.Unsupported) + { + Debug.Log("ARCheckAvailability: unsupported"); + SendToFlutter.Send("ar:false"); + } + else + { + Debug.Log("ARCheckAvailability: available"); + SendToFlutter.Send("ar:true"); + } + } + } +} \ No newline at end of file diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/ARCheckAvailability.cs.meta b/example_unity_6000_0_project/Assets/Example/Scripts/ARCheckAvailability.cs.meta new file mode 100644 index 0000000..31cc057 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/ARCheckAvailability.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96b150af282ad0a48a2796f44816682a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/ARLogoPinner.cs b/example_unity_6000_0_project/Assets/Example/Scripts/ARLogoPinner.cs new file mode 100644 index 0000000..d25c37e --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/ARLogoPinner.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.XR.ARFoundation; + +public class ARLogoPinner : MonoBehaviour +{ + private static readonly float cursorRaycastX = 0.5f; + private static readonly float cursorRaycastY = 0.2f; + private static readonly float noSurfaceMannequinPositionX = 0.5f; + private static readonly float noSurfaceMannequinPositionY = 0.5f; + private static readonly float noSurfaceMannequinDistanceFromCamera = 3f; + + public ARRaycastManager raycastManager; + public GameObject flutterLogo; + private bool haveFoundSurface = false; + + // Update is called once per frame + void Update() + { + Vector2 screenPosition = Camera.main.ViewportToScreenPoint(new Vector2(cursorRaycastX, cursorRaycastY)); + List hits = new List(); + raycastManager.Raycast(screenPosition, hits, UnityEngine.XR.ARSubsystems.TrackableType.PlaneWithinPolygon); + + if (hits.Count > 0) + { + // Surface was detected, so use that as the logo position + flutterLogo.transform.position = hits[0].pose.position; + float scaleRelativeToDistance = hits[0].distance / 8; + flutterLogo.transform.localScale = new Vector3(scaleRelativeToDistance, scaleRelativeToDistance, scaleRelativeToDistance); + haveFoundSurface = true; + } + else if (!haveFoundSurface) + { + // No surface detected, so use a point straight infront of the camera + flutterLogo.transform.position = Camera.main.ViewportToWorldPoint(new Vector3(noSurfaceMannequinPositionX, noSurfaceMannequinPositionY, noSurfaceMannequinDistanceFromCamera)); + flutterLogo.transform.localScale = Vector3.one; + } + } +} \ No newline at end of file diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/ARLogoPinner.cs.meta b/example_unity_6000_0_project/Assets/Example/Scripts/ARLogoPinner.cs.meta new file mode 100644 index 0000000..882ece5 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/ARLogoPinner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 35d4f5085f62615478052ef5c57bbc1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/ReceiveFromFlutterRotation.cs b/example_unity_6000_0_project/Assets/Example/Scripts/ReceiveFromFlutterRotation.cs new file mode 100644 index 0000000..e6203a6 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/ReceiveFromFlutterRotation.cs @@ -0,0 +1,23 @@ +using System.Globalization; +using UnityEngine; + +public class ReceiveFromFlutterRotation : MonoBehaviour +{ + float _rotationSpeed = 20f; + + void Update() + { + transform.Rotate(0, _rotationSpeed * Time.deltaTime, 0); + } + + public void SetRotationSpeed(string data) + { + _rotationSpeed = float.Parse( + data, + // When converting between strings and numbers in a message protocol + // always use a fixed locale, to prevent unexpected parsing errors when + // the user's locale is different to the locale used by the developer + // (eg the decimal separator might be different) + CultureInfo.InvariantCulture); + } +} diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/ReceiveFromFlutterRotation.cs.meta b/example_unity_6000_0_project/Assets/Example/Scripts/ReceiveFromFlutterRotation.cs.meta new file mode 100644 index 0000000..e1857ae --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/ReceiveFromFlutterRotation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a98ab02fef424f488977159bd6fa420 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/SceneSwitcher.cs b/example_unity_6000_0_project/Assets/Example/Scripts/SceneSwitcher.cs new file mode 100644 index 0000000..03455a6 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/SceneSwitcher.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using UnityEngine.SceneManagement; + +public class SceneSwitcher : MonoBehaviour +{ + void SwitchToScene(string sceneName) + { + if(!sceneName.Equals(SceneManager.GetActiveScene().name)) { + SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single); + } + } +} diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/SceneSwitcher.cs.meta b/example_unity_6000_0_project/Assets/Example/Scripts/SceneSwitcher.cs.meta new file mode 100644 index 0000000..3ce95ce --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/SceneSwitcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1478ccf15aa1bd14ab8c9b9f82e35835 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterSceneLoaded.cs b/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterSceneLoaded.cs new file mode 100644 index 0000000..5cb6842 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterSceneLoaded.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using UnityEngine.SceneManagement; + +public class SendToFlutterSceneLoaded : MonoBehaviour +{ + void OnEnable() + { + SceneManager.sceneLoaded += OnSceneLoaded; + } + + void OnSceneLoaded(Scene scene, LoadSceneMode mode) + { + SendToFlutter.Send("scene_loaded"); + } + + // called when the game is terminated + void OnDisable() + { + SceneManager.sceneLoaded -= OnSceneLoaded; + } +} diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterSceneLoaded.cs.meta b/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterSceneLoaded.cs.meta new file mode 100644 index 0000000..d2c58ab --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterSceneLoaded.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 358915f3f06aba9418a6baec89c1f77a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterTouched.cs b/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterTouched.cs new file mode 100644 index 0000000..b1e169e --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterTouched.cs @@ -0,0 +1,31 @@ +using UnityEngine; +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.EnhancedTouch; + +public class SendToFlutterTouched : MonoBehaviour +{ + void Awake() { + // Required for input polling in new input system + EnhancedTouchSupport.Enable(); + } + + void OnDestroy() + { + EnhancedTouchSupport.Disable(); + } + + void Update() + { + if (UnityEngine.InputSystem.EnhancedTouch.Touch.activeTouches.Count > 0 + && UnityEngine.InputSystem.EnhancedTouch.Touch.activeTouches[0].began) + { + Ray ray = Camera.main.ScreenPointToRay(UnityEngine.InputSystem.EnhancedTouch.Touch.activeTouches[0].screenPosition); + RaycastHit hit; + if (Physics.Raycast(ray, out hit)) + { + Debug.Log("Flutter logo touched"); + SendToFlutter.Send("touch"); + } + } + } +} diff --git a/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterTouched.cs.meta b/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterTouched.cs.meta new file mode 100644 index 0000000..cfc98d3 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Example/Scripts/SendToFlutterTouched.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 915b1b9c07848394c9932bfc30eeda64 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed.meta b/example_unity_6000_0_project/Assets/FlutterEmbed.meta new file mode 100644 index 0000000..cda6af9 --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c3808c7df1112b14ab651f293f4ea1b0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor.meta b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor.meta new file mode 100644 index 0000000..a48bd4d --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3c0b9e4196d3bd4489c177a2fd5a7ab6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportChecker.cs b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportChecker.cs new file mode 100644 index 0000000..97b9024 --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportChecker.cs @@ -0,0 +1,211 @@ +using System; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEditor.Build; + +internal class ProjectExportCheckerResult +{ + internal bool IsSuccessful { get; set; } + internal BuildPlayerOptions BuildPlayerOptions { get; set; } + internal List PrecheckWarnings { get; set; } = new List(); + + internal static ProjectExportCheckerResult Success(BuildPlayerOptions buildPlayerOptions, List precheckWarnings) + { + return new ProjectExportCheckerResult + { + IsSuccessful = true, + BuildPlayerOptions = buildPlayerOptions, + PrecheckWarnings = precheckWarnings + }; + } + + internal static ProjectExportCheckerResult Failure() + { + return new ProjectExportCheckerResult { IsSuccessful = false }; + } +} + +internal class ProjectExportChecker +{ + internal ProjectExportCheckerResult PreCheckAndroid() + { + if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android) + { + ProjectExportHelpers.ShowErrorMessage("Can't export until you change the build target to Android: see File -> Build Profiles -> Platform, then Switch Target"); + return ProjectExportCheckerResult.Failure(); + } + +#if UNITY_ANDROID && UNITY_2023_1_OR_NEWER + if (PlayerSettings.Android.applicationEntry != AndroidApplicationEntry.Activity) + { + ProjectExportHelpers.ShowErrorMessage("Can't export until you change the 'Application Entry Point' to 'Activity'. \nFile -> Build Profiles -> Player Settings -> Other Settings -> Application Entry Point."); + return ProjectExportCheckerResult.Failure(); + } +#endif + + // Because Debug.Log does not work until after the build, collect any log messages to show at the end: + List precheckWarnings = new(); + + // Carry out checks common to Android and iOS. May add precheckWarnings to the list (hence using ref) + bool passedCommonChecks = PreCheckCommon(ref precheckWarnings, NamedBuildTarget.Android, BuildTargetGroup.Android); + + if (passedCommonChecks) + { + if (!EditorUserBuildSettings.exportAsGoogleAndroidProject) + { + ProjectExportHelpers.ShowErrorMessage("Can't export until you tick 'Export project': see File -> Build settings"); + return ProjectExportCheckerResult.Failure(); + } + + AndroidArchitecture architectures = PlayerSettings.Android.targetArchitectures; + if (!architectures.HasFlag(AndroidArchitecture.ARMv7) || !architectures.HasFlag(AndroidArchitecture.ARM64)) + { + ProjectExportHelpers.ShowErrorMessage("You must include ARMv7 and ARM64 as target architectures " + + "(see File -> Build settings -> Player Settings -> Other Settings -> Target architectures)"); + return ProjectExportCheckerResult.Failure(); + } + + return PrepareExportDirectory("android", "unityLibrary", precheckWarnings); + } + else + { + return ProjectExportCheckerResult.Failure(); + } + } + + internal ProjectExportCheckerResult PreCheckIos() + { + if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.iOS) + { + ProjectExportHelpers.ShowErrorMessage("Can't export until you change the build target to iOS: see File -> Build Profiles -> Platform, then Switch Target"); + return ProjectExportCheckerResult.Failure(); + } + + // Because Debug.Log does not work until after the build, collect any log messages to show at the end: + List precheckWarnings = new(); + + // Carry out checks common to Android and iOS. May add precheckWarnings to the list (hence using ref) + bool passedCommonChecks = PreCheckCommon(ref precheckWarnings, NamedBuildTarget.iOS, BuildTargetGroup.iOS); + + if (passedCommonChecks) + { + if(EditorUserBuildSettings.iOSXcodeBuildConfig == XcodeBuildConfig.Debug) { + precheckWarnings.Add("iOS XCode build configuration is set to 'debug'. This should be set to 'release' for release builds"); + } + + return PrepareExportDirectory("ios", "unityLibrary", precheckWarnings); + } + else + { + return ProjectExportCheckerResult.Failure(); + } + } + + private bool PreCheckCommon(ref List precheckWarnings, NamedBuildTarget namedBuildTarget, BuildTargetGroup buildTargetGroup) + { +#if !UNITY_6000 + ProjectExportHelpers.ShowErrorMessage("This plugin only supports Unity 6000.0 ."); + return false; +#endif + + if (PlayerSettings.GetScriptingBackend(EditorUserBuildSettings.selectedBuildTargetGroup) != ScriptingImplementation.IL2CPP) + { + ProjectExportHelpers.ShowErrorMessage("You must set IL2CPP as the scripting backend " + + "(see File -> Build settings -> Player Settings -> Other Settings -> Scripting backend)"); + return false; + } + + if (EditorUserBuildSettings.allowDebugging) + { + precheckWarnings.Add("'Allow debugging' is set to 'true'. This should be disabled for release builds" + + "(see File -> Build settings -> Player settings -> untick 'Development build' and 'Script debugging')"); + } + + Il2CppCodeGeneration il2CppCodeGeneration = PlayerSettings.GetIl2CppCodeGeneration(namedBuildTarget); + if (il2CppCodeGeneration == Il2CppCodeGeneration.OptimizeSize) + { + precheckWarnings.Add($"'IL2CPP code generation' is set to 'Faster (smaller) builds'. This can improve build time (useful for development) " + + "but should be set to 'Faster runtime' when building your release version " + + "(see File -> Build settings -> Player Settings -> Other Settings -> IL2CPP code generation)"); + } + + Il2CppCompilerConfiguration il2CppCompilerConfiguration = PlayerSettings.GetIl2CppCompilerConfiguration(buildTargetGroup); + if (il2CppCompilerConfiguration == Il2CppCompilerConfiguration.Debug) + { + precheckWarnings.Add($"'C++ compiler configuration' is set to 'Debug'. This can be useful for debugging during development " + + "but should be set to 'Release' when building your release version " + + "(see File -> Build settings -> Player Settings -> Other Settings -> C++ compiler configuration)"); + } + + return true; + } + + private ProjectExportCheckerResult PrepareExportDirectory(String subfolderName, String folderName, List precheckWarnings) + { + bool confirmOpenFolderSelection = EditorUtility.DisplayDialog( + "Select export directory", + "In the next window, select the export directory. This should be " + + $"'/{subfolderName}/{folderName}'", + "Select folder", + "Cancel"); + + if (!confirmOpenFolderSelection) + { + return ProjectExportCheckerResult.Failure(); + } + else + { + // Get the current BuildPlayerOptions (this also opens a directory window to select the export path) + BuildPlayerOptions buildPlayerOptions = BuildPlayerWindow.DefaultBuildMethods.GetBuildPlayerOptions(new BuildPlayerOptions()); + DirectoryInfo selectedDirectory = new DirectoryInfo(buildPlayerOptions.locationPathName); + + if (selectedDirectory.Name.Equals(subfolderName)) + { + bool createUnityLibrarySubfolder = EditorUtility.DisplayDialog( + "Create subfolder?", + $"It looks like you selected the '{subfolderName}' folder instead of '{subfolderName}/{folderName}'. " + + $"Use '{subfolderName}/{folderName}' instead?", + "Yes", + "Cancel"); + + if (createUnityLibrarySubfolder) + { + buildPlayerOptions.locationPathName = Path.Combine(buildPlayerOptions.locationPathName, folderName); + selectedDirectory = new DirectoryInfo(buildPlayerOptions.locationPathName); + Directory.CreateDirectory(buildPlayerOptions.locationPathName); + } + else + { + return ProjectExportCheckerResult.Failure(); + } + } + + if (!selectedDirectory.Name.Equals(folderName) || selectedDirectory.Parent == null || selectedDirectory.Parent.Name != subfolderName) + { + ProjectExportHelpers.ShowErrorMessage($"Expected a folder named {folderName} inside '{subfolderName}' folder. " + + $"Check the plugin documentation: you need to select '/{subfolderName}/{folderName}'. " + + "Aborting export"); + return ProjectExportCheckerResult.Failure(); + } + else + { + if (Directory.GetFileSystemEntries(buildPlayerOptions.locationPathName).Length != 0) + { + bool confirmDeleteOldExport = EditorUtility.DisplayDialog( + "Confirm overwrite", + $"Overwrite existing directory? (this will delete all files in {buildPlayerOptions.locationPathName})", + "Overwrite", + "Cancel"); + + if (confirmDeleteOldExport) + { + Directory.Delete(selectedDirectory.FullName, true); + } + } + + return ProjectExportCheckerResult.Success(buildPlayerOptions, precheckWarnings); + } + } + } +} diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportChecker.cs.meta b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportChecker.cs.meta new file mode 100644 index 0000000..28d97db --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportChecker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 831df08cc17da004bbc8d33ed78f8529 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportHelpers.cs b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportHelpers.cs new file mode 100644 index 0000000..99bec09 --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportHelpers.cs @@ -0,0 +1,32 @@ +using System.IO; +using UnityEditor; + +internal class ProjectExportHelpers +{ + static internal void ShowErrorMessage(string errorMessage) + { + EditorUtility.DisplayDialog( + "Export incomplete", + errorMessage, + "Okay"); + } + + static internal void MoveContentsOfDirectory(DirectoryInfo from, DirectoryInfo to) + { + Directory.CreateDirectory(to.FullName); + + // Copy each file into the new directory. + foreach (FileInfo fi in from.GetFiles()) + { + fi.MoveTo(Path.Combine(to.FullName, fi.Name)); + } + + // Copy each subdirectory using recursion. + foreach (DirectoryInfo diSourceSubDir in from.GetDirectories()) + { + DirectoryInfo nextTargetSubDir = + to.CreateSubdirectory(diSourceSubDir.Name); + MoveContentsOfDirectory(diSourceSubDir, nextTargetSubDir); + } + } +} \ No newline at end of file diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportHelpers.cs.meta b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportHelpers.cs.meta new file mode 100644 index 0000000..1c8b6e9 --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExportHelpers.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 388c19ded9745674daedc50639e74eb6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporter.cs b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporter.cs new file mode 100644 index 0000000..207cc9c --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporter.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.Build.Reporting; +using UnityEngine; + +internal abstract class ProjectExporter { + internal void Export(BuildPlayerOptions buildPlayerOptions, List precheckWarnings) + { + // This executes the build: + BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions); + + if (report.summary.result != BuildResult.Succeeded) { + Debug.LogError("Building project for Flutter failed"); + } + else { + TransformExportedProject(buildPlayerOptions.locationPathName); + + // Debug.Log doesn't work until after BuildPipeline.BuildPlayer has executed + foreach(var log in precheckWarnings) { + Debug.LogWarning(log); + } + Debug.Log($"Building project for Flutter succeeded"); + } + } + + protected abstract void TransformExportedProject(string exportPath); +} \ No newline at end of file diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporter.cs.meta b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporter.cs.meta new file mode 100644 index 0000000..4ccec81 --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fe8562f7848270d43a238f96e0ea87bb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterAndroid.cs b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterAndroid.cs new file mode 100644 index 0000000..c65562e --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterAndroid.cs @@ -0,0 +1,131 @@ +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using UnityEngine; + +internal class ProjectExporterAndroid : ProjectExporter +{ + protected override void TransformExportedProject(string exportPath) + { + Debug.Log("Transforming Unity export for Flutter integration..."); + + // The exported project has this structure: + // + // + // | + // |- + // |- + // |- + // |- build.gradle + // |- gradle.properties + // |- local.properties + // |- settings.gradle + // + // The structure is: + // A library part in the unityLibrary module that you can integrate into any other Gradle project. This contains the Unity runtime and Player data. + // A thin launcher part in the launcher module that contains the application name and its icons. This is a simple Android application that launches Unity. + // + // This needs to be transformed into a single module (the unityLibrary part). + // The launcher module is not needed, as the user's Flutter project's android part will be the 'launcher'. + // However, we do need the string.xml file from the launcher, as this contains some strings which Unity + // will expect to find (and will crash with android.content.res.Resources$NotFoundException if they don't exist) + // So, first, copy strings.xml + // from `\launcher\src\main\res\values\` + // to `\unityLibrary\src\main\res\values\` + + string stringsResourceFileFromPath = new string[] {exportPath, "launcher", "src", "main", "res", "values", "strings.xml"} + .Aggregate((a, b) => Path.Combine(a, b)); + string stringResourcesFileToPath = new string[] {exportPath, "unityLibrary", "src", "main", "res", "values", "strings.xml"} + .Aggregate((a, b) => Path.Combine(a, b)); + + FileInfo stringsResourceFile = new FileInfo(stringsResourceFileFromPath); + + if(!stringsResourceFile.Exists) { + ProjectExportHelpers.ShowErrorMessage($"Unexpected error: '{stringsResourceFile.FullName} not found"); + return; + } + + stringsResourceFile.MoveTo(stringResourcesFileToPath); + Debug.Log($"Moved {stringsResourceFileFromPath} to {stringResourcesFileToPath}"); + + // The launcher folder can now be deleted + DirectoryInfo launcherDirectory = new DirectoryInfo(Path.Combine(exportPath, "launcher")); + Directory.Delete(launcherDirectory.FullName, true); + Debug.Log($"Deleted {launcherDirectory.FullName}"); + + // The gradle folder can be deleted + DirectoryInfo gradleDirectory = new DirectoryInfo(Path.Combine(exportPath, "gradle")); + Directory.Delete(gradleDirectory.FullName, true); + Debug.Log($"Deleted {gradleDirectory.FullName}"); + + // The files at the root of exportPath can be deleted + DirectoryInfo exportDirectory = new DirectoryInfo(exportPath); + foreach (FileInfo file in exportDirectory.GetFiles()) { + file.Delete(); + Debug.Log($"Deleted {file.FullName}"); + } + + // Now move the contents of + // '/unityLibrary/unityLibrary' + // to '/unityLibrary' + // so that the unityLibrary module is 'promoted' to being the main and only module of the export + DirectoryInfo unityLibrarySubModuleDirectory = new DirectoryInfo(Path.Combine(exportPath, "unityLibrary")); + if(!unityLibrarySubModuleDirectory.Exists) { + ProjectExportHelpers.ShowErrorMessage($"Unexpected error: '{unityLibrarySubModuleDirectory.FullName} not found"); + return; + } + ProjectExportHelpers.MoveContentsOfDirectory(unityLibrarySubModuleDirectory, exportDirectory); + unityLibrarySubModuleDirectory.Delete(true); + Debug.Log($"Moved {unityLibrarySubModuleDirectory.FullName} to {exportDirectory.FullName}"); + + // Now move the contents of + // '/shared/' + // to '/unityLibrary' + // Should only be keepUnitySymbols.gradle + DirectoryInfo sharedDirectory = new DirectoryInfo(Path.Combine(exportPath, "shared")); + if (!sharedDirectory.Exists) + { + ProjectExportHelpers.ShowErrorMessage($"Unexpected error: '{sharedDirectory.FullName} not found"); + return; + } + ProjectExportHelpers.MoveContentsOfDirectory(sharedDirectory, exportDirectory); + sharedDirectory.Delete(true); + Debug.Log($"Moved {sharedDirectory.FullName} to {exportDirectory.FullName}"); + + + // The export includes an activity in the AndroidManifest.xml which is not going to be + // used (because we are using a Flutter PlatfromView instead). Remove it + FileInfo androidManifestFile = new FileInfo(Path.Combine(exportPath, "src", "main", "AndroidManifest.xml")); + if(!androidManifestFile.Exists) { + ProjectExportHelpers.ShowErrorMessage($"Unexpected error: '{androidManifestFile.FullName} not found"); + return; + } + string androidManifestContents = File.ReadAllText(androidManifestFile.FullName); + Regex regexActivityTag = new Regex(@"(\s|\S)+?", RegexOptions.Multiline); + androidManifestContents = regexActivityTag.Replace(androidManifestContents, ""); + File.WriteAllText(androidManifestFile.FullName, androidManifestContents); + Debug.Log($"Removed from {androidManifestFile.FullName}"); + + // Fix an import in unityLibrary\build.gradle + FileInfo buildGradleFile = new FileInfo(Path.Combine(exportPath, "build.gradle")); + if(!buildGradleFile.Exists) { + ProjectExportHelpers.ShowErrorMessage($"Unexpected error: '{buildGradleFile.FullName} not found"); + return; + } + string buildGradleContents = File.ReadAllText(buildGradleFile.FullName); + // Change references to the ../shared folder to unityLibrary + buildGradleContents = Regex.Replace(buildGradleContents, @"\.\./shared/", "./"); + File.WriteAllText(buildGradleFile.FullName, buildGradleContents); + Debug.Log($"Fixed ../shared references in {buildGradleFile.FullName}"); + + DirectoryInfo burstDebugInformation = new DirectoryInfo(Path.Join(exportPath, "..", "unityLibrary_BurstDebugInformation_DoNotShip")); + if(burstDebugInformation.Exists) { + Directory.Delete(burstDebugInformation.FullName, true); + Debug.Log($"Deleted {burstDebugInformation.FullName}"); + } + + Debug.Log("Transforming Unity export for Flutter integration complete"); + } + + +} diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterAndroid.cs.meta b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterAndroid.cs.meta new file mode 100644 index 0000000..d411c7b --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterAndroid.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 88e3899aa361f71429e041378c8a4356 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterIos.cs b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterIos.cs new file mode 100644 index 0000000..da2542e --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterIos.cs @@ -0,0 +1,56 @@ + +// Using UNITY_IOS preprocessor because 'using UnityEditor.iOS.Xcode' is only available with iOS build tools +#if UNITY_IOS + +using System.IO; +using UnityEditor; +using UnityEditor.iOS.Xcode; +using UnityEngine; + + +internal class ProjectExporterIos : ProjectExporter +{ + + protected override void TransformExportedProject(string exportPath) + { + Debug.Log("Transforming Unity export for Flutter integration..."); + + FileInfo pbxProjFileInfo = new FileInfo(Path.Combine(exportPath, "Unity-iPhone.xcodeproj", "project.pbxproj")); + + if(!pbxProjFileInfo.Exists) { + ProjectExportHelpers.ShowErrorMessage($"Error transforming iOS export: couldn't find {pbxProjFileInfo.FullName}"); + return; + } + + // We're using the GNU linker flag -U to force the FlutterEmbedUnityIosSendToFlutter symbol to be entered + // in the output file as an undefined symbol. This is incompatible with bitcode, with this error message + // during build: + // Error (Xcode): -U and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together + // + // By default, the Unity project is build with bitcode enabled. Luckily, bitcode is now deprecated - + // From Apple’s release note of Xcode 14 (https://developer.apple.com/documentation/xcode-release-notes/xcode-14-release-notes): + // + // "Starting with Xcode 14, bitcode is no longer required for watchOS and tvOS applications, and the App Store no longer accepts + // bitcode submissions from Xcode 14. + // Xcode no longer builds bitcode by default and generates a warning message if a project explicitly enables bitcode: “Building + // with bitcode is deprecated. Please update your project and/or target settings to disable bitcode.” + // The capability to build with bitcode will be removed in a future Xcode release." + // + // So, disable bitcode for the Unity export project: + PBXProject pbxProject = new PBXProject(); + pbxProject.ReadFromFile(pbxProjFileInfo.FullName); + pbxProject.SetBuildProperty(pbxProject.ProjectGuid(), "ENABLE_BITCODE", "NO"); + pbxProject.WriteToFile(pbxProjFileInfo.FullName); + + // Delete the BurstDebugInformation folder + DirectoryInfo burstDebugInformation = new DirectoryInfo(Path.Join(exportPath, "..", "unityLibrary_BurstDebugInformation_DoNotShip")); + if(burstDebugInformation.Exists) { + Directory.Delete(burstDebugInformation.FullName, true); + Debug.Log($"Deleted {burstDebugInformation.FullName}"); + } + + Debug.Log("Transforming Unity export for Flutter integration complete"); + } +} + +#endif \ No newline at end of file diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterIos.cs.meta b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterIos.cs.meta new file mode 100644 index 0000000..d68c00c --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterIos.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 146dfed0340f2414a9fbd4904e770c4f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterMenuItem.cs b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterMenuItem.cs new file mode 100644 index 0000000..a1e9076 --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterMenuItem.cs @@ -0,0 +1,30 @@ +using UnityEditor; + +public class ProjectExporterMenuItem : EditorWindow +{ + private static ProjectExportChecker projectExportChecker = new ProjectExportChecker(); + + [MenuItem("Flutter Embed/Export project to flutter app (Android)")] + static void ExportProjectAndroid() + { + ProjectExportCheckerResult result = projectExportChecker.PreCheckAndroid(); + +#if UNITY_ANDROID + if(result.IsSuccessful) { + new ProjectExporterAndroid().Export(result.BuildPlayerOptions, result.PrecheckWarnings); + } +#endif + } + + [MenuItem("Flutter Embed/Export project to flutter app (iOS)")] + static void ExportProjectIos() + { + // Using UNITY_IOS preprocessor because 'using UnityEditor.iOS.Xcode' is only available with iOS build tools + ProjectExportCheckerResult result = projectExportChecker.PreCheckIos(); +#if UNITY_IOS + if(result.IsSuccessful) { + new ProjectExporterIos().Export(result.BuildPlayerOptions, result.PrecheckWarnings); + } +#endif + } +} diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterMenuItem.cs.meta b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterMenuItem.cs.meta new file mode 100644 index 0000000..6cb7f55 --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/Editor/ProjectExporterMenuItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fba280215ec82d843a36e4c6008b57f4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/SendToFlutter.meta b/example_unity_6000_0_project/Assets/FlutterEmbed/SendToFlutter.meta new file mode 100644 index 0000000..44c515d --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/SendToFlutter.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c3f5938a01411664f80169ff2752a7ef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/SendToFlutter/SendToFlutter.cs b/example_unity_6000_0_project/Assets/FlutterEmbed/SendToFlutter/SendToFlutter.cs new file mode 100644 index 0000000..22c0036 --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/SendToFlutter/SendToFlutter.cs @@ -0,0 +1,33 @@ +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using UnityEngine.SceneManagement; + +public class SendToFlutter +{ + public static void Send(string data) { + if (Application.platform == RuntimePlatform.Android) + { + // Use reflection to call the relevant static Kotlin method in the Android plugin + using (AndroidJavaClass sendToFlutterClass = new AndroidJavaClass("com.learntoflutter.flutter_embed_unity_android.messaging.SendToFlutter")) + { + sendToFlutterClass.CallStatic("sendToFlutter", data); + } + } + else + { +#if UNITY_IOS + // Call an obj-C function name + FlutterEmbedUnityIos_sendToFlutter(data); +#endif + } + } + +#if UNITY_IOS + // On iOS plugins are statically linked into the executable, + // so we have to use __Internal as the library name. + [DllImport("__Internal")] + // This function is defined in flutter_embed_unity_2022_3_ios/ios/Classes/SendToFlutter.swift + private static extern void FlutterEmbedUnityIos_sendToFlutter(string data); +#endif +} diff --git a/example_unity_6000_0_project/Assets/FlutterEmbed/SendToFlutter/SendToFlutter.cs.meta b/example_unity_6000_0_project/Assets/FlutterEmbed/SendToFlutter/SendToFlutter.cs.meta new file mode 100644 index 0000000..529ad75 --- /dev/null +++ b/example_unity_6000_0_project/Assets/FlutterEmbed/SendToFlutter/SendToFlutter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 76534d2a828ef4c4a89f657f52b12041 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Readme.asset b/example_unity_6000_0_project/Assets/Readme.asset new file mode 100644 index 0000000..77c2f83 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Readme.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fcf7219bab7fe46a1ad266029b2fee19, type: 3} + m_Name: Readme + m_EditorClassIdentifier: + icon: {fileID: 2800000, guid: 727a75301c3d24613a3ebcec4a24c2c8, type: 3} + title: URP Empty Template + sections: + - heading: Welcome to the Universal Render Pipeline + text: This template includes the settings and assets you need to start creating with the Universal Render Pipeline. + linkText: + url: + - heading: URP Documentation + text: + linkText: Read more about URP + url: https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest + - heading: Forums + text: + linkText: Get answers and support + url: https://forum.unity.com/forums/universal-render-pipeline.383/ + - heading: Report bugs + text: + linkText: Submit a report + url: https://unity3d.com/unity/qa/bug-reporting + loadedLayout: 1 diff --git a/example_unity_6000_0_project/Assets/Readme.asset.meta b/example_unity_6000_0_project/Assets/Readme.asset.meta new file mode 100644 index 0000000..ab3ad45 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Readme.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8105016687592461f977c054a80ce2f2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Settings.meta b/example_unity_6000_0_project/Assets/Settings.meta new file mode 100644 index 0000000..39b94dd --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 709f11a7f3c4041caa4ef136ea32d874 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Settings/SampleSceneProfile.asset b/example_unity_6000_0_project/Assets/Settings/SampleSceneProfile.asset new file mode 100644 index 0000000..37e401d --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/SampleSceneProfile.asset @@ -0,0 +1,123 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7893295128165547882 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} + m_Name: Bloom + m_EditorClassIdentifier: + active: 1 + m_AdvancedMode: 0 + threshold: + m_OverrideState: 1 + m_Value: 1 + min: 0 + intensity: + m_OverrideState: 1 + m_Value: 1 + min: 0 + scatter: + m_OverrideState: 0 + m_Value: 0.7 + min: 0 + max: 1 + clamp: + m_OverrideState: 0 + m_Value: 65472 + min: 0 + tint: + m_OverrideState: 0 + m_Value: {r: 1, g: 1, b: 1, a: 1} + hdr: 0 + showAlpha: 0 + showEyeDropper: 1 + highQualityFiltering: + m_OverrideState: 0 + m_Value: 0 + skipIterations: + m_OverrideState: 0 + m_Value: 1 + min: 0 + max: 16 + dirtTexture: + m_OverrideState: 0 + m_Value: {fileID: 0} + dirtIntensity: + m_OverrideState: 0 + m_Value: 0 + min: 0 +--- !u!114 &-7011558710299706105 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 899c54efeace73346a0a16faa3afe726, type: 3} + m_Name: Vignette + m_EditorClassIdentifier: + active: 1 + m_AdvancedMode: 0 + color: + m_OverrideState: 0 + m_Value: {r: 0, g: 0, b: 0, a: 1} + hdr: 0 + showAlpha: 0 + showEyeDropper: 1 + center: + m_OverrideState: 0 + m_Value: {x: 0.5, y: 0.5} + intensity: + m_OverrideState: 1 + m_Value: 0.25 + min: 0 + max: 1 + smoothness: + m_OverrideState: 1 + m_Value: 0.4 + min: 0.01 + max: 1 + rounded: + m_OverrideState: 0 + m_Value: 0 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: SampleSceneProfile + m_EditorClassIdentifier: + components: + - {fileID: 849379129802519247} + - {fileID: -7893295128165547882} + - {fileID: -7011558710299706105} +--- !u!114 &849379129802519247 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 97c23e3b12dc18c42a140437e53d3951, type: 3} + m_Name: Tonemapping + m_EditorClassIdentifier: + active: 1 + m_AdvancedMode: 0 + mode: + m_OverrideState: 1 + m_Value: 1 diff --git a/example_unity_6000_0_project/Assets/Settings/SampleSceneProfile.asset.meta b/example_unity_6000_0_project/Assets/Settings/SampleSceneProfile.asset.meta new file mode 100644 index 0000000..f8cce64 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/SampleSceneProfile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6560a915ef98420e9faacc1c7438823 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Settings/URP-Balanced-Renderer.asset b/example_unity_6000_0_project/Assets/Settings/URP-Balanced-Renderer.asset new file mode 100644 index 0000000..d971be1 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-Balanced-Renderer.asset @@ -0,0 +1,112 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6244410763145040608 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ae4d376c05df421b98c5b39b25b0d29, type: 3} + m_Name: ARBackgroundRendererFeature + m_EditorClassIdentifier: + m_Active: 1 +--- !u!114 &-1878332245247344467 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f62c9c65cf3354c93be831c8bc075510, type: 3} + m_Name: SSAO + m_EditorClassIdentifier: + m_Active: 1 + m_Settings: + AOMethod: 1 + Downsample: 1 + AfterOpaque: 0 + Source: 0 + NormalSamples: 0 + Intensity: 0.5 + DirectLightingStrength: 0.25 + Radius: 0.25 + Samples: 2 + BlurQuality: 0 + Falloff: 100 + SampleCount: -1 + m_BlueNoise256Textures: + - {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3} + - {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3} + - {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3} + - {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3} + - {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3} + - {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3} + - {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3} + m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: URP-Balanced-Renderer + m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} + m_RendererFeatures: + - {fileID: -1878332245247344467} + - {fileID: -6244410763145040608} + m_RendererFeatureMap: adc0de57c6d2eee5202d1dc77e6557a9 + m_UseNativeRenderPass: 0 + postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} + xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} + shaders: + blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} + copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + screenSpaceShadowPS: {fileID: 0} + samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} + fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} + materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} + coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, + type: 3} + blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} + cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, + type: 3} + objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, + type: 3} + dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, + type: 3} + m_AssetVersion: 2 + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 0 + stencilCompareFunction: 8 + passOperation: 2 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 1 + m_RenderingMode: 0 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 0 + m_AccurateGbufferNormals: 0 + m_IntermediateTextureMode: 1 diff --git a/example_unity_6000_0_project/Assets/Settings/URP-Balanced-Renderer.asset.meta b/example_unity_6000_0_project/Assets/Settings/URP-Balanced-Renderer.asset.meta new file mode 100644 index 0000000..8fa7f17 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-Balanced-Renderer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e634585d5c4544dd297acaee93dc2beb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Settings/URP-Balanced.asset b/example_unity_6000_0_project/Assets/Settings/URP-Balanced.asset new file mode 100644 index 0000000..ecc8cb0 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-Balanced.asset @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} + m_Name: URP-Balanced + m_EditorClassIdentifier: + k_AssetVersion: 12 + k_AssetPreviousVersion: 12 + m_RendererType: 1 + m_RendererData: {fileID: 0} + m_RendererDataList: + - {fileID: 11400000, guid: e634585d5c4544dd297acaee93dc2beb, type: 2} + m_DefaultRendererIndex: 0 + m_RequireDepthTexture: 0 + m_RequireOpaqueTexture: 0 + m_OpaqueDownsampling: 1 + m_SupportsTerrainHoles: 1 + m_SupportsHDR: 1 + m_HDRColorBufferPrecision: 0 + m_MSAA: 1 + m_RenderScale: 1 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 + m_EnableLODCrossFade: 1 + m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 + m_LightProbeSystem: 0 + m_ProbeVolumeMemoryBudget: 1024 + m_ProbeVolumeBlendingMemoryBudget: 256 + m_SupportProbeVolumeGPUStreaming: 0 + m_SupportProbeVolumeDiskStreaming: 0 + m_SupportProbeVolumeScenarios: 0 + m_SupportProbeVolumeScenarioBlending: 0 + m_ProbeVolumeSHBands: 1 + m_MainLightRenderingMode: 1 + m_MainLightShadowsSupported: 1 + m_MainLightShadowmapResolution: 1024 + m_AdditionalLightsRenderingMode: 1 + m_AdditionalLightsPerObjectLimit: 2 + m_AdditionalLightShadowsSupported: 0 + m_AdditionalLightsShadowmapResolution: 512 + m_AdditionalLightsShadowResolutionTierLow: 128 + m_AdditionalLightsShadowResolutionTierMedium: 256 + m_AdditionalLightsShadowResolutionTierHigh: 512 + m_ReflectionProbeBlending: 0 + m_ReflectionProbeBoxProjection: 0 + m_ShadowDistance: 50 + m_ShadowCascadeCount: 1 + m_Cascade2Split: 0.25 + m_Cascade3Split: {x: 0.1, y: 0.3} + m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} + m_CascadeBorder: 0.1 + m_ShadowDepthBias: 1 + m_ShadowNormalBias: 1 + m_AnyShadowsSupported: 1 + m_SoftShadowsSupported: 1 + m_ConservativeEnclosingSphere: 0 + m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 2 + m_AdditionalLightsCookieResolution: 512 + m_AdditionalLightsCookieFormat: 1 + m_UseSRPBatcher: 1 + m_SupportsDynamicBatching: 0 + m_MixedLightingSupported: 1 + m_SupportsLightCookies: 1 + m_SupportsLightLayers: 0 + m_DebugLevel: 0 + m_StoreActionsOptimization: 0 + m_UseAdaptivePerformance: 1 + m_ColorGradingMode: 0 + m_ColorGradingLutSize: 32 + m_AllowPostProcessAlphaOutput: 0 + m_UseFastSRGBLinearConversion: 0 + m_SupportDataDrivenLensFlare: 1 + m_SupportScreenSpaceLensFlare: 1 + m_GPUResidentDrawerMode: 0 + m_SmallMeshScreenPercentage: 0 + m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0 + m_ShadowType: 1 + m_LocalShadowsSupported: 0 + m_LocalShadowsAtlasResolution: 256 + m_MaxPixelLights: 0 + m_ShadowAtlasResolution: 256 + m_VolumeFrameworkUpdateMode: 0 + m_VolumeProfile: {fileID: 0} + apvScenesData: + obsoleteSceneBounds: + m_Keys: [] + m_Values: [] + obsoleteHasProbeVolumes: + m_Keys: [] + m_Values: + m_PrefilteringModeMainLightShadows: 3 + m_PrefilteringModeAdditionalLight: 4 + m_PrefilteringModeAdditionalLightShadows: 0 + m_PrefilterXRKeywords: 0 + m_PrefilteringModeForwardPlus: 0 + m_PrefilteringModeDeferredRendering: 0 + m_PrefilteringModeScreenSpaceOcclusion: 2 + m_PrefilterDebugKeywords: 1 + m_PrefilterWriteRenderingLayers: 1 + m_PrefilterHDROutput: 1 + m_PrefilterAlphaOutput: 1 + m_PrefilterSSAODepthNormals: 1 + m_PrefilterSSAOSourceDepthLow: 0 + m_PrefilterSSAOSourceDepthMedium: 1 + m_PrefilterSSAOSourceDepthHigh: 1 + m_PrefilterSSAOInterleaved: 0 + m_PrefilterSSAOBlueNoise: 1 + m_PrefilterSSAOSampleCountLow: 0 + m_PrefilterSSAOSampleCountMedium: 1 + m_PrefilterSSAOSampleCountHigh: 1 + m_PrefilterDBufferMRT1: 1 + m_PrefilterDBufferMRT2: 1 + m_PrefilterDBufferMRT3: 1 + m_PrefilterSoftShadowsQualityLow: 1 + m_PrefilterSoftShadowsQualityMedium: 0 + m_PrefilterSoftShadowsQualityHigh: 1 + m_PrefilterSoftShadows: 1 + m_PrefilterScreenCoord: 1 + m_PrefilterNativeRenderPass: 1 + m_PrefilterUseLegacyLightmaps: 0 + m_ShaderVariantLogLevel: 0 + m_ShadowCascades: 0 + m_Textures: + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} diff --git a/example_unity_6000_0_project/Assets/Settings/URP-Balanced.asset.meta b/example_unity_6000_0_project/Assets/Settings/URP-Balanced.asset.meta new file mode 100644 index 0000000..f524db0 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-Balanced.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e1260c1148f6143b28bae5ace5e9c5d1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity-Renderer.asset b/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity-Renderer.asset new file mode 100644 index 0000000..6391767 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity-Renderer.asset @@ -0,0 +1,105 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1878332245247344467 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f62c9c65cf3354c93be831c8bc075510, type: 3} + m_Name: SSAO + m_EditorClassIdentifier: + m_Active: 1 + m_Settings: + AOMethod: 1 + Downsample: 0 + AfterOpaque: 0 + Source: 1 + NormalSamples: 1 + Intensity: 0.5 + DirectLightingStrength: 0.25 + Radius: 0.25 + Samples: 0 + BlurQuality: 0 + Falloff: 100 + SampleCount: -1 + m_BlueNoise256Textures: + - {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3} + - {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3} + - {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3} + - {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3} + - {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3} + - {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3} + - {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3} + m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3} +--- !u!114 &-267364489217903508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ae4d376c05df421b98c5b39b25b0d29, type: 3} + m_Name: ARBackgroundRendererFeature + m_EditorClassIdentifier: + m_Active: 1 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: URP-HighFidelity-Renderer + m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} + probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, + type: 3} + probeVolumeResources: + probeVolumeDebugShader: {fileID: 0} + probeVolumeFragmentationDebugShader: {fileID: 0} + probeVolumeOffsetDebugShader: {fileID: 0} + probeVolumeSamplingDebugShader: {fileID: 0} + probeSamplingDebugMesh: {fileID: 0} + probeSamplingDebugTexture: {fileID: 0} + probeVolumeBlendStatesCS: {fileID: 0} + m_RendererFeatures: + - {fileID: -1878332245247344467} + - {fileID: -267364489217903508} + m_RendererFeatureMap: adc0de57c6d2eee56cf49ce269214afc + m_UseNativeRenderPass: 0 + xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} + postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} + m_AssetVersion: 2 + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 0 + stencilCompareFunction: 8 + passOperation: 2 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 1 + m_RenderingMode: 0 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 0 + m_DepthAttachmentFormat: 0 + m_DepthTextureFormat: 0 + m_AccurateGbufferNormals: 0 + m_IntermediateTextureMode: 1 diff --git a/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity-Renderer.asset.meta b/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity-Renderer.asset.meta new file mode 100644 index 0000000..bcdff02 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity-Renderer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c40be3174f62c4acf8c1216858c64956 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity.asset b/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity.asset new file mode 100644 index 0000000..898ec96 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity.asset @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} + m_Name: URP-HighFidelity + m_EditorClassIdentifier: + k_AssetVersion: 12 + k_AssetPreviousVersion: 12 + m_RendererType: 1 + m_RendererData: {fileID: 0} + m_RendererDataList: + - {fileID: 11400000, guid: c40be3174f62c4acf8c1216858c64956, type: 2} + m_DefaultRendererIndex: 0 + m_RequireDepthTexture: 0 + m_RequireOpaqueTexture: 0 + m_OpaqueDownsampling: 1 + m_SupportsTerrainHoles: 1 + m_SupportsHDR: 1 + m_HDRColorBufferPrecision: 0 + m_MSAA: 4 + m_RenderScale: 1 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 + m_EnableLODCrossFade: 1 + m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 + m_LightProbeSystem: 0 + m_ProbeVolumeMemoryBudget: 1024 + m_ProbeVolumeBlendingMemoryBudget: 256 + m_SupportProbeVolumeGPUStreaming: 0 + m_SupportProbeVolumeDiskStreaming: 0 + m_SupportProbeVolumeScenarios: 0 + m_SupportProbeVolumeScenarioBlending: 0 + m_ProbeVolumeSHBands: 1 + m_MainLightRenderingMode: 1 + m_MainLightShadowsSupported: 1 + m_MainLightShadowmapResolution: 4096 + m_AdditionalLightsRenderingMode: 1 + m_AdditionalLightsPerObjectLimit: 8 + m_AdditionalLightShadowsSupported: 1 + m_AdditionalLightsShadowmapResolution: 4096 + m_AdditionalLightsShadowResolutionTierLow: 128 + m_AdditionalLightsShadowResolutionTierMedium: 256 + m_AdditionalLightsShadowResolutionTierHigh: 512 + m_ReflectionProbeBlending: 1 + m_ReflectionProbeBoxProjection: 1 + m_ShadowDistance: 150 + m_ShadowCascadeCount: 4 + m_Cascade2Split: 0.25 + m_Cascade3Split: {x: 0.1, y: 0.3} + m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} + m_CascadeBorder: 0.1 + m_ShadowDepthBias: 1 + m_ShadowNormalBias: 1 + m_AnyShadowsSupported: 1 + m_SoftShadowsSupported: 1 + m_ConservativeEnclosingSphere: 0 + m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 2 + m_AdditionalLightsCookieResolution: 4096 + m_AdditionalLightsCookieFormat: 4 + m_UseSRPBatcher: 1 + m_SupportsDynamicBatching: 0 + m_MixedLightingSupported: 1 + m_SupportsLightCookies: 1 + m_SupportsLightLayers: 0 + m_DebugLevel: 0 + m_StoreActionsOptimization: 0 + m_UseAdaptivePerformance: 1 + m_ColorGradingMode: 0 + m_ColorGradingLutSize: 32 + m_AllowPostProcessAlphaOutput: 0 + m_UseFastSRGBLinearConversion: 0 + m_SupportDataDrivenLensFlare: 1 + m_SupportScreenSpaceLensFlare: 1 + m_GPUResidentDrawerMode: 0 + m_SmallMeshScreenPercentage: 0 + m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0 + m_ShadowType: 1 + m_LocalShadowsSupported: 0 + m_LocalShadowsAtlasResolution: 256 + m_MaxPixelLights: 0 + m_ShadowAtlasResolution: 256 + m_VolumeFrameworkUpdateMode: 0 + m_VolumeProfile: {fileID: 0} + apvScenesData: + obsoleteSceneBounds: + m_Keys: [] + m_Values: [] + obsoleteHasProbeVolumes: + m_Keys: [] + m_Values: + m_PrefilteringModeMainLightShadows: 3 + m_PrefilteringModeAdditionalLight: 4 + m_PrefilteringModeAdditionalLightShadows: 2 + m_PrefilterXRKeywords: 0 + m_PrefilteringModeForwardPlus: 0 + m_PrefilteringModeDeferredRendering: 0 + m_PrefilteringModeScreenSpaceOcclusion: 2 + m_PrefilterDebugKeywords: 1 + m_PrefilterWriteRenderingLayers: 1 + m_PrefilterHDROutput: 1 + m_PrefilterAlphaOutput: 1 + m_PrefilterSSAODepthNormals: 0 + m_PrefilterSSAOSourceDepthLow: 1 + m_PrefilterSSAOSourceDepthMedium: 1 + m_PrefilterSSAOSourceDepthHigh: 1 + m_PrefilterSSAOInterleaved: 0 + m_PrefilterSSAOBlueNoise: 1 + m_PrefilterSSAOSampleCountLow: 1 + m_PrefilterSSAOSampleCountMedium: 1 + m_PrefilterSSAOSampleCountHigh: 0 + m_PrefilterDBufferMRT1: 1 + m_PrefilterDBufferMRT2: 1 + m_PrefilterDBufferMRT3: 1 + m_PrefilterSoftShadowsQualityLow: 1 + m_PrefilterSoftShadowsQualityMedium: 0 + m_PrefilterSoftShadowsQualityHigh: 1 + m_PrefilterSoftShadows: 1 + m_PrefilterScreenCoord: 1 + m_PrefilterNativeRenderPass: 1 + m_PrefilterUseLegacyLightmaps: 0 + m_ShaderVariantLogLevel: 0 + m_ShadowCascades: 1 + m_Textures: + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} diff --git a/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity.asset.meta b/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity.asset.meta new file mode 100644 index 0000000..7416e17 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-HighFidelity.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b7fd9122c28c4d15b667c7040e3b3fd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Settings/URP-Performant-Renderer.asset b/example_unity_6000_0_project/Assets/Settings/URP-Performant-Renderer.asset new file mode 100644 index 0000000..59623cb --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-Performant-Renderer.asset @@ -0,0 +1,76 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: URP-Performant-Renderer + m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} + m_RendererFeatures: + - {fileID: 4111074100381138314} + m_RendererFeatureMap: 8abd86e61c780d39 + m_UseNativeRenderPass: 0 + postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} + xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} + shaders: + blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} + copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + screenSpaceShadowPS: {fileID: 0} + samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} + fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} + materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} + coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, + type: 3} + blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} + cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, + type: 3} + objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, + type: 3} + dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, + type: 3} + m_AssetVersion: 2 + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 0 + stencilCompareFunction: 8 + passOperation: 2 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 1 + m_RenderingMode: 0 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 0 + m_AccurateGbufferNormals: 0 + m_IntermediateTextureMode: 1 +--- !u!114 &4111074100381138314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0ae4d376c05df421b98c5b39b25b0d29, type: 3} + m_Name: ARBackgroundRendererFeature + m_EditorClassIdentifier: + m_Active: 1 diff --git a/example_unity_6000_0_project/Assets/Settings/URP-Performant-Renderer.asset.meta b/example_unity_6000_0_project/Assets/Settings/URP-Performant-Renderer.asset.meta new file mode 100644 index 0000000..912ff60 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-Performant-Renderer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 707360a9c581a4bd7aa53bfeb1429f71 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/Settings/URP-Performant.asset b/example_unity_6000_0_project/Assets/Settings/URP-Performant.asset new file mode 100644 index 0000000..ca44166 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-Performant.asset @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} + m_Name: URP-Performant + m_EditorClassIdentifier: + k_AssetVersion: 12 + k_AssetPreviousVersion: 12 + m_RendererType: 1 + m_RendererData: {fileID: 0} + m_RendererDataList: + - {fileID: 11400000, guid: 707360a9c581a4bd7aa53bfeb1429f71, type: 2} + m_DefaultRendererIndex: 0 + m_RequireDepthTexture: 0 + m_RequireOpaqueTexture: 0 + m_OpaqueDownsampling: 1 + m_SupportsTerrainHoles: 1 + m_SupportsHDR: 0 + m_HDRColorBufferPrecision: 0 + m_MSAA: 1 + m_RenderScale: 1 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 + m_EnableLODCrossFade: 1 + m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 + m_LightProbeSystem: 0 + m_ProbeVolumeMemoryBudget: 1024 + m_ProbeVolumeBlendingMemoryBudget: 256 + m_SupportProbeVolumeGPUStreaming: 0 + m_SupportProbeVolumeDiskStreaming: 0 + m_SupportProbeVolumeScenarios: 0 + m_SupportProbeVolumeScenarioBlending: 0 + m_ProbeVolumeSHBands: 1 + m_MainLightRenderingMode: 1 + m_MainLightShadowsSupported: 0 + m_MainLightShadowmapResolution: 1024 + m_AdditionalLightsRenderingMode: 0 + m_AdditionalLightsPerObjectLimit: 4 + m_AdditionalLightShadowsSupported: 0 + m_AdditionalLightsShadowmapResolution: 512 + m_AdditionalLightsShadowResolutionTierLow: 128 + m_AdditionalLightsShadowResolutionTierMedium: 256 + m_AdditionalLightsShadowResolutionTierHigh: 512 + m_ReflectionProbeBlending: 0 + m_ReflectionProbeBoxProjection: 0 + m_ShadowDistance: 50 + m_ShadowCascadeCount: 1 + m_Cascade2Split: 0.25 + m_Cascade3Split: {x: 0.1, y: 0.3} + m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} + m_CascadeBorder: 0.1 + m_ShadowDepthBias: 1 + m_ShadowNormalBias: 1 + m_AnyShadowsSupported: 1 + m_SoftShadowsSupported: 0 + m_ConservativeEnclosingSphere: 0 + m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 2 + m_AdditionalLightsCookieResolution: 2048 + m_AdditionalLightsCookieFormat: 3 + m_UseSRPBatcher: 1 + m_SupportsDynamicBatching: 0 + m_MixedLightingSupported: 1 + m_SupportsLightCookies: 1 + m_SupportsLightLayers: 0 + m_DebugLevel: 0 + m_StoreActionsOptimization: 0 + m_UseAdaptivePerformance: 1 + m_ColorGradingMode: 0 + m_ColorGradingLutSize: 16 + m_AllowPostProcessAlphaOutput: 0 + m_UseFastSRGBLinearConversion: 0 + m_SupportDataDrivenLensFlare: 1 + m_SupportScreenSpaceLensFlare: 1 + m_GPUResidentDrawerMode: 0 + m_SmallMeshScreenPercentage: 0 + m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0 + m_ShadowType: 1 + m_LocalShadowsSupported: 0 + m_LocalShadowsAtlasResolution: 256 + m_MaxPixelLights: 0 + m_ShadowAtlasResolution: 256 + m_VolumeFrameworkUpdateMode: 0 + m_VolumeProfile: {fileID: 0} + apvScenesData: + obsoleteSceneBounds: + m_Keys: [] + m_Values: [] + obsoleteHasProbeVolumes: + m_Keys: [] + m_Values: + m_PrefilteringModeMainLightShadows: 0 + m_PrefilteringModeAdditionalLight: 0 + m_PrefilteringModeAdditionalLightShadows: 0 + m_PrefilterXRKeywords: 0 + m_PrefilteringModeForwardPlus: 0 + m_PrefilteringModeDeferredRendering: 0 + m_PrefilteringModeScreenSpaceOcclusion: 0 + m_PrefilterDebugKeywords: 1 + m_PrefilterWriteRenderingLayers: 1 + m_PrefilterHDROutput: 1 + m_PrefilterAlphaOutput: 1 + m_PrefilterSSAODepthNormals: 1 + m_PrefilterSSAOSourceDepthLow: 1 + m_PrefilterSSAOSourceDepthMedium: 1 + m_PrefilterSSAOSourceDepthHigh: 1 + m_PrefilterSSAOInterleaved: 1 + m_PrefilterSSAOBlueNoise: 1 + m_PrefilterSSAOSampleCountLow: 1 + m_PrefilterSSAOSampleCountMedium: 1 + m_PrefilterSSAOSampleCountHigh: 1 + m_PrefilterDBufferMRT1: 1 + m_PrefilterDBufferMRT2: 1 + m_PrefilterDBufferMRT3: 1 + m_PrefilterSoftShadowsQualityLow: 1 + m_PrefilterSoftShadowsQualityMedium: 1 + m_PrefilterSoftShadowsQualityHigh: 1 + m_PrefilterSoftShadows: 0 + m_PrefilterScreenCoord: 1 + m_PrefilterNativeRenderPass: 1 + m_PrefilterUseLegacyLightmaps: 0 + m_ShaderVariantLogLevel: 0 + m_ShadowCascades: 0 + m_Textures: + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} diff --git a/example_unity_6000_0_project/Assets/Settings/URP-Performant.asset.meta b/example_unity_6000_0_project/Assets/Settings/URP-Performant.asset.meta new file mode 100644 index 0000000..264c9c5 --- /dev/null +++ b/example_unity_6000_0_project/Assets/Settings/URP-Performant.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d0e2fc18fe036412f8223b3b3d9ad574 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/UniversalRenderPipelineGlobalSettings.asset b/example_unity_6000_0_project/Assets/UniversalRenderPipelineGlobalSettings.asset new file mode 100644 index 0000000..cee1058 --- /dev/null +++ b/example_unity_6000_0_project/Assets/UniversalRenderPipelineGlobalSettings.asset @@ -0,0 +1,342 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2ec995e51a6e251468d2a3fd8a686257, type: 3} + m_Name: UniversalRenderPipelineGlobalSettings + m_EditorClassIdentifier: + m_ShaderStrippingSetting: + m_Version: 0 + m_ExportShaderVariants: 1 + m_ShaderVariantLogLevel: 0 + m_StripRuntimeDebugShaders: 1 + m_URPShaderStrippingSetting: + m_Version: 0 + m_StripUnusedPostProcessingVariants: 1 + m_StripUnusedVariants: 1 + m_StripScreenCoordOverrideVariants: 1 + m_ShaderVariantLogLevel: 0 + m_ExportShaderVariants: 1 + m_StripDebugVariants: 1 + m_StripUnusedPostProcessingVariants: 1 + m_StripUnusedVariants: 1 + m_StripScreenCoordOverrideVariants: 1 + supportRuntimeDebugDisplay: 0 + m_EnableRenderGraph: 0 + m_Settings: + m_SettingsList: + m_List: + - rid: 1650408776259862708 + - rid: 1650408776259862709 + - rid: 1650408776259862710 + - rid: 1650408776259862711 + - rid: 1650408776259862712 + - rid: 1650408776259862713 + - rid: 1650408776259862714 + - rid: 1650408776259862715 + - rid: 1650408776259862716 + - rid: 1650408776259862717 + - rid: 1650408776259862718 + - rid: 1650408776259862719 + - rid: 1650408776259862720 + - rid: 1650408776259862721 + - rid: 1650408776259862722 + - rid: 1650408776259862723 + - rid: 1650408776259862724 + - rid: 1650408776259862725 + - rid: 1650408776259862726 + - rid: 1650408776259862727 + - rid: 1650408776259862728 + m_RuntimeSettings: + m_List: + - rid: 1650408776259862709 + - rid: 1650408776259862711 + - rid: 1650408776259862712 + - rid: 1650408776259862714 + - rid: 1650408776259862716 + - rid: 1650408776259862717 + - rid: 1650408776259862718 + - rid: 1650408776259862722 + - rid: 1650408776259862725 + - rid: 1650408776259862726 + - rid: 1650408776259862728 + m_AssetVersion: 8 + m_ObsoleteDefaultVolumeProfile: {fileID: 0} + m_RenderingLayerNames: + - Light Layer default + - Light Layer 1 + - Light Layer 2 + - Light Layer 3 + - Light Layer 4 + - Light Layer 5 + - Light Layer 6 + - Light Layer 7 + m_ValidRenderingLayers: 255 + lightLayerName0: Light Layer default + lightLayerName1: Light Layer 1 + lightLayerName2: Light Layer 2 + lightLayerName3: Light Layer 3 + lightLayerName4: Light Layer 4 + lightLayerName5: Light Layer 5 + lightLayerName6: Light Layer 6 + lightLayerName7: Light Layer 7 + apvScenesData: + obsoleteSceneBounds: + m_Keys: [] + m_Values: [] + obsoleteHasProbeVolumes: + m_Keys: [] + m_Values: + references: + version: 2 + RefIds: + - rid: 1650408776259862708 + type: {class: UniversalRenderPipelineEditorMaterials, ns: UnityEngine.Rendering.Universal, + asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_DefaultMaterial: {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, + type: 2} + m_DefaultParticleMaterial: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, + type: 2} + m_DefaultLineMaterial: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, + type: 2} + m_DefaultTerrainMaterial: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, + type: 2} + m_DefaultDecalMaterial: {fileID: 2100000, guid: 31d0dcc6f2dd4e4408d18036a2c93862, + type: 2} + - rid: 1650408776259862709 + type: {class: UniversalRendererResources, ns: UnityEngine.Rendering.Universal, + asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + m_CameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, + type: 3} + m_StencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, + type: 3} + m_DBufferClear: {fileID: 4800000, guid: f056d8bd2a1c7e44e9729144b4c70395, + type: 3} + - rid: 1650408776259862710 + type: {class: Renderer2DResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_LightShader: {fileID: 4800000, guid: 3f6c848ca3d7bca4bbe846546ac701a1, type: 3} + m_ProjectedShadowShader: {fileID: 4800000, guid: ce09d4a80b88c5a4eb9768fab4f1ee00, + type: 3} + m_SpriteShadowShader: {fileID: 4800000, guid: 44fc62292b65ab04eabcf310e799ccf6, + type: 3} + m_SpriteUnshadowShader: {fileID: 4800000, guid: de02b375720b5c445afe83cd483bedf3, + type: 3} + m_GeometryShadowShader: {fileID: 4800000, guid: 19349a0f9a7ed4c48a27445bcf92e5e1, + type: 3} + m_GeometryUnshadowShader: {fileID: 4800000, guid: 77774d9009bb81447b048c907d4c6273, + type: 3} + m_FallOffLookup: {fileID: 2800000, guid: 5688ab254e4c0634f8d6c8e0792331ca, + type: 3} + m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + m_DefaultCustomMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, + type: 2} + m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, + type: 2} + m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, + type: 2} + m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, + type: 2} + - rid: 1650408776259862711 + type: {class: UniversalRenderPipelineDebugShaders, ns: UnityEngine.Rendering.Universal, + asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_DebugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + m_HdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, + type: 3} + m_ProbeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, + type: 3} + - rid: 1650408776259862712 + type: {class: UniversalRenderPipelineRuntimeXRResources, ns: UnityEngine.Rendering.Universal, + asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_xrOcclusionMeshPS: {fileID: 4800000, guid: 4431b1f1f743fbf4eb310a967890cbea, + type: 3} + m_xrMirrorViewPS: {fileID: 4800000, guid: d5a307c014552314b9f560906d708772, + type: 3} + - rid: 1650408776259862713 + type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, + asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_StripUnusedPostProcessingVariants: 1 + m_StripUnusedVariants: 1 + m_StripScreenCoordOverrideVariants: 1 + - rid: 1650408776259862714 + type: {class: UniversalRenderPipelineRuntimeShaders, ns: UnityEngine.Rendering.Universal, + asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_FallbackErrorShader: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, + type: 3} + m_BlitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, + type: 3} + m_CoreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + m_CoreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, + type: 3} + m_SamplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + - rid: 1650408776259862715 + type: {class: UniversalRenderPipelineEditorShaders, ns: UnityEngine.Rendering.Universal, + asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_AutodeskInteractive: {fileID: 4800000, guid: 0e9d5a909a1f7e84882a534d0d11e49f, + type: 3} + m_AutodeskInteractiveTransparent: {fileID: 4800000, guid: 5c81372d981403744adbdda4433c9c11, + type: 3} + m_AutodeskInteractiveMasked: {fileID: 4800000, guid: 80aa867ac363ac043847b06ad71604cd, + type: 3} + m_TerrainDetailLit: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, + type: 3} + m_TerrainDetailGrassBillboard: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, + type: 3} + m_TerrainDetailGrass: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, + type: 3} + m_DefaultSpeedTree7Shader: {fileID: 4800000, guid: 0f4122b9a743b744abe2fb6a0a88868b, + type: 3} + m_DefaultSpeedTree8Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, + type: 3} + m_DefaultSpeedTree9Shader: {fileID: -6465566751694194690, guid: cbd3e1cc4ae141c42a30e33b4d666a61, + type: 3} + - rid: 1650408776259862716 + type: {class: RenderGraphSettings, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_EnableRenderCompatibilityMode: 1 + - rid: 1650408776259862717 + type: {class: UniversalRenderPipelineRuntimeTextures, ns: UnityEngine.Rendering.Universal, + asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 1 + m_BlueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, + type: 3} + m_BayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, + type: 3} + m_DebugFontTex: {fileID: 2800000, guid: 26a413214480ef144b2915d6ff4d0beb, + type: 3} + - rid: 1650408776259862718 + type: {class: URPDefaultVolumeProfileSettings, ns: UnityEngine.Rendering.Universal, + asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_VolumeProfile: {fileID: 11400000, guid: 3e9ad90b4ae08f843b46ecf6ee5ae65c, + type: 2} + - rid: 1650408776259862719 + type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime} + data: + m_Version: 0 + m_InstanceDataBufferCopyKernels: {fileID: 7200000, guid: f984aeb540ded8b4fbb8a2047ab5b2e2, + type: 3} + m_InstanceDataBufferUploadKernels: {fileID: 7200000, guid: 53864816eb00f2343b60e1a2c5a262ef, + type: 3} + m_TransformUpdaterKernels: {fileID: 7200000, guid: 2a567b9b2733f8d47a700c3c85bed75b, + type: 3} + m_WindDataUpdaterKernels: {fileID: 7200000, guid: fde76746e4fd0ed418c224f6b4084114, + type: 3} + m_OccluderDepthPyramidKernels: {fileID: 7200000, guid: 08b2b5fb307b0d249860612774a987da, + type: 3} + m_InstanceOcclusionCullingKernels: {fileID: 7200000, guid: f6d223acabc2f974795a5a7864b50e6c, + type: 3} + m_OcclusionCullingDebugKernels: {fileID: 7200000, guid: b23e766bcf50ca4438ef186b174557df, + type: 3} + m_DebugOcclusionTestPS: {fileID: 4800000, guid: d3f0849180c2d0944bc71060693df100, + type: 3} + m_DebugOccluderPS: {fileID: 4800000, guid: b3c92426a88625841ab15ca6a7917248, + type: 3} + - rid: 1650408776259862720 + type: {class: ProbeVolumeRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 1 + probeVolumeBlendStatesCS: {fileID: 7200000, guid: a3f7b8c99de28a94684cb1daebeccf5d, + type: 3} + probeVolumeUploadDataCS: {fileID: 7200000, guid: 0951de5992461754fa73650732c4954c, + type: 3} + probeVolumeUploadDataL2CS: {fileID: 7200000, guid: 6196f34ed825db14b81fb3eb0ea8d931, + type: 3} + - rid: 1650408776259862721 + type: {class: ProbeVolumeDebugResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 1 + probeVolumeDebugShader: {fileID: 4800000, guid: 3b21275fd12d65f49babb5286f040f2d, + type: 3} + probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 3a80877c579b9144ebdcc6d923bca303, + type: 3} + probeVolumeSamplingDebugShader: {fileID: 4800000, guid: bf54e6528c79a224e96346799064c393, + type: 3} + probeVolumeOffsetDebugShader: {fileID: 4800000, guid: db8bd7436dc2c5f4c92655307d198381, + type: 3} + probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 20be25aac4e22ee49a7db76fb3df6de2, + type: 3} + numbersDisplayTex: {fileID: 2800000, guid: 73fe53b428c5b3440b7e87ee830b608a, + type: 3} + - rid: 1650408776259862722 + type: {class: RenderGraphUtilsResources, ns: UnityEngine.Rendering.RenderGraphModule.Util, + asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 0 + m_CoreCopyPS: {fileID: 4800000, guid: 12dc59547ea167a4ab435097dd0f9add, type: 3} + - rid: 1650408776259862723 + type: {class: ProbeVolumeGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 1 + m_ProbeVolumeDisableStreamingAssets: 0 + - rid: 1650408776259862724 + type: {class: ProbeVolumeBakingResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 1 + dilationShader: {fileID: 7200000, guid: 6bb382f7de370af41b775f54182e491d, + type: 3} + subdivideSceneCS: {fileID: 7200000, guid: bb86f1f0af829fd45b2ebddda1245c22, + type: 3} + voxelizeSceneShader: {fileID: 4800000, guid: c8b6a681c7b4e2e4785ffab093907f9e, + type: 3} + traceVirtualOffsetCS: {fileID: 7200000, guid: 805f10d263aac4b4098c0279cd37a4f3, + type: 3} + traceVirtualOffsetRT: {fileID: 4807578003741378534, guid: b60511f4aa1443f4d8c0b18f4fec92f4, + type: 3} + skyOcclusionCS: {fileID: 7200000, guid: 798f52ec82fa04048a12826bbbbcf7b4, + type: 3} + skyOcclusionRT: {fileID: 4807578003741378534, guid: dfaf42b38dd001f49a72d8102b709f29, + type: 3} + renderingLayerCS: {fileID: 7200000, guid: a63c9cf933e3d8f41ae680a372784ebf, + type: 3} + renderingLayerRT: {fileID: 4807578003741378534, guid: c2be09c936362eb49a58f08aeb30627a, + type: 3} + - rid: 1650408776259862725 + type: {class: RenderGraphGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_version: 0 + m_EnableCompilationCaching: 1 + m_EnableValidityChecks: 1 + - rid: 1650408776259862726 + type: {class: ShaderStrippingSetting, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 0 + m_ExportShaderVariants: 1 + m_ShaderVariantLogLevel: 0 + m_StripRuntimeDebugShaders: 1 + - rid: 1650408776259862727 + type: {class: IncludeAdditionalRPAssets, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_version: 0 + m_IncludeReferencedInScenes: 0 + m_IncludeAssetsByLabel: 0 + m_LabelToInclude: + - rid: 1650408776259862728 + type: {class: STP/RuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_setupCS: {fileID: 7200000, guid: 33be2e9a5506b2843bdb2bdff9cad5e1, type: 3} + m_preTaaCS: {fileID: 7200000, guid: a679dba8ec4d9ce45884a270b0e22dda, type: 3} + m_taaCS: {fileID: 7200000, guid: 3923900e2b41b5e47bc25bfdcbcdc9e6, type: 3} diff --git a/example_unity_6000_0_project/Assets/UniversalRenderPipelineGlobalSettings.asset.meta b/example_unity_6000_0_project/Assets/UniversalRenderPipelineGlobalSettings.asset.meta new file mode 100644 index 0000000..81b84f2 --- /dev/null +++ b/example_unity_6000_0_project/Assets/UniversalRenderPipelineGlobalSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18dc0cd2c080841dea60987a38ce93fa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR.meta b/example_unity_6000_0_project/Assets/XR.meta new file mode 100644 index 0000000..a61efbf --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bfb9196c96ebf9e4ab10cceb08bd1aea +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/Loaders.meta b/example_unity_6000_0_project/Assets/XR/Loaders.meta new file mode 100644 index 0000000..24d5cce --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Loaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ae5bc6e6d64e514478988441d24c5b52 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/Loaders/ARCoreLoader.asset b/example_unity_6000_0_project/Assets/XR/Loaders/ARCoreLoader.asset new file mode 100644 index 0000000..f301129 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Loaders/ARCoreLoader.asset @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 06042c85f885b4d1886f3ca5a1074eca, type: 3} + m_Name: ARCoreLoader + m_EditorClassIdentifier: diff --git a/example_unity_6000_0_project/Assets/XR/Loaders/ARCoreLoader.asset.meta b/example_unity_6000_0_project/Assets/XR/Loaders/ARCoreLoader.asset.meta new file mode 100644 index 0000000..13eef72 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Loaders/ARCoreLoader.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 09b81a759ffba5545879e1d8114e907d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/Loaders/ARKitLoader.asset b/example_unity_6000_0_project/Assets/XR/Loaders/ARKitLoader.asset new file mode 100644 index 0000000..ceb249c --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Loaders/ARKitLoader.asset @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a18c4d6661b404073b154020b9e2d993, type: 3} + m_Name: ARKitLoader + m_EditorClassIdentifier: diff --git a/example_unity_6000_0_project/Assets/XR/Loaders/ARKitLoader.asset.meta b/example_unity_6000_0_project/Assets/XR/Loaders/ARKitLoader.asset.meta new file mode 100644 index 0000000..9498ee6 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Loaders/ARKitLoader.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e29e31b142fae0c41975239d1fed675f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/Loaders/SimulationLoader.asset b/example_unity_6000_0_project/Assets/XR/Loaders/SimulationLoader.asset new file mode 100644 index 0000000..f560076 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Loaders/SimulationLoader.asset @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: df71837a07684b24082222c253aa156a, type: 3} + m_Name: SimulationLoader + m_EditorClassIdentifier: diff --git a/example_unity_6000_0_project/Assets/XR/Loaders/SimulationLoader.asset.meta b/example_unity_6000_0_project/Assets/XR/Loaders/SimulationLoader.asset.meta new file mode 100644 index 0000000..5343012 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Loaders/SimulationLoader.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a409f60f63fc5924186dc33732d36966 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/Resources.meta b/example_unity_6000_0_project/Assets/XR/Resources.meta new file mode 100644 index 0000000..3c8bd21 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b422d13156529354d93e7b8f007fd6b4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/Resources/XRSimulationRuntimeSettings.asset b/example_unity_6000_0_project/Assets/XR/Resources/XRSimulationRuntimeSettings.asset new file mode 100644 index 0000000..e85064d --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Resources/XRSimulationRuntimeSettings.asset @@ -0,0 +1,60 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2b12afd4d27418a9cfb2823fe2b9ff3, type: 3} + m_Name: XRSimulationRuntimeSettings + m_EditorClassIdentifier: + m_EnvironmentLayer: 30 + m_EnvironmentScanParams: + m_MinimumRescanTime: 0.1 + m_DeltaCameraDistanceToRescan: 0.025 + m_DeltaCameraAngleToRescan: 4 + m_RaysPerCast: 10 + m_MaximumHitDistance: 12 + m_MinimumHitDistance: 0.05 + m_PlaneFindingParams: + m_MinimumPlaneUpdateTime: 0.13 + m_MinPointsPerSqMeter: 30 + m_MinSideLength: 0.11 + m_InLayerMergeDistance: 0.2 + m_CrossLayerMergeDistance: 0.05 + m_CheckEmptyArea: 0 + m_AllowedEmptyAreaCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_PointUpdateDropoutRate: 0.4 + m_NormalToleranceAngle: 15 + m_VoxelSize: 0.1 + m_TrackedImageDiscoveryParams: + m_TrackingUpdateInterval: 0.09 + m_UseXRay: 1 + m_FlipXRayDirection: 0 diff --git a/example_unity_6000_0_project/Assets/XR/Resources/XRSimulationRuntimeSettings.asset.meta b/example_unity_6000_0_project/Assets/XR/Resources/XRSimulationRuntimeSettings.asset.meta new file mode 100644 index 0000000..bc37ac7 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Resources/XRSimulationRuntimeSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1bb45b8eaf32e014881e9b3a3be8feac +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/Settings.meta b/example_unity_6000_0_project/Assets/XR/Settings.meta new file mode 100644 index 0000000..329b3d5 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Settings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5693edf729123c8409766227fca2c687 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/Settings/ARCoreSettings.asset b/example_unity_6000_0_project/Assets/XR/Settings/ARCoreSettings.asset new file mode 100644 index 0000000..13eb6c1 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Settings/ARCoreSettings.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9dae4501572e1418791be3e3bf1f7faa, type: 3} + m_Name: ARCoreSettings + m_EditorClassIdentifier: + m_Requirement: 1 + m_Depth: 1 + m_IgnoreGradleVersion: 0 diff --git a/example_unity_6000_0_project/Assets/XR/Settings/ARCoreSettings.asset.meta b/example_unity_6000_0_project/Assets/XR/Settings/ARCoreSettings.asset.meta new file mode 100644 index 0000000..9b881f2 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Settings/ARCoreSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 814ab6c01ebf3674a989665a56cc192f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/Settings/ARKitSettings.asset b/example_unity_6000_0_project/Assets/XR/Settings/ARKitSettings.asset new file mode 100644 index 0000000..d9bfb4a --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Settings/ARKitSettings.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a3c2811d41034e52a6d6c33ac73a207, type: 3} + m_Name: ARKitSettings + m_EditorClassIdentifier: + m_Requirement: 1 + m_FaceTracking: 0 diff --git a/example_unity_6000_0_project/Assets/XR/Settings/ARKitSettings.asset.meta b/example_unity_6000_0_project/Assets/XR/Settings/ARKitSettings.asset.meta new file mode 100644 index 0000000..3b484a3 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Settings/ARKitSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: af33930b30debe2468b7f1d0a834679f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/Settings/XRSimulationSettings.asset b/example_unity_6000_0_project/Assets/XR/Settings/XRSimulationSettings.asset new file mode 100644 index 0000000..e876841 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Settings/XRSimulationSettings.asset @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0688bbae6cedcd4a871944e38c19ec0, type: 3} + m_Name: XRSimulationSettings + m_EditorClassIdentifier: diff --git a/example_unity_6000_0_project/Assets/XR/Settings/XRSimulationSettings.asset.meta b/example_unity_6000_0_project/Assets/XR/Settings/XRSimulationSettings.asset.meta new file mode 100644 index 0000000..90f5269 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/Settings/XRSimulationSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 949df4f5018867b40a4a9e6b8dcb054f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/UserSimulationSettings.meta b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings.meta new file mode 100644 index 0000000..37abce2 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 84c662f186877a54e854d1b727b6a9c2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/Resources.meta b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/Resources.meta new file mode 100644 index 0000000..742576c --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 958c223d33d27c746ae0de3fbc8ae514 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/Resources/XRSimulationPreferences.asset b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/Resources/XRSimulationPreferences.asset new file mode 100644 index 0000000..b002708 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/Resources/XRSimulationPreferences.asset @@ -0,0 +1,29 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b2f528b98f844ed8b6b2d5fdf90b40e6, type: 3} + m_Name: XRSimulationPreferences + m_EditorClassIdentifier: + m_HasInputActionUpgrade: 1 + m_EnvironmentPrefab: {fileID: 7576867131100388943, guid: c7b92c392902f4043a03a64032c02fe1, + type: 3} + m_FallbackEnvironmentPrefab: {fileID: 0} + m_UnlockInputActionReference: {fileID: -6503468053843192148, guid: 1dd796eaee8744b4aa41b3f8bf5df64f, + type: 3} + m_MoveInputActionReference: {fileID: -8435123576461090514, guid: 1dd796eaee8744b4aa41b3f8bf5df64f, + type: 3} + m_LookInputActionReference: {fileID: -2447619311606779944, guid: 1dd796eaee8744b4aa41b3f8bf5df64f, + type: 3} + m_SprintInputActionReference: {fileID: -5750007214975788477, guid: 1dd796eaee8744b4aa41b3f8bf5df64f, + type: 3} + m_LookSpeed: 1 + m_MoveSpeed: 1 + m_MoveSpeedModifier: 3 diff --git a/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/Resources/XRSimulationPreferences.asset.meta b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/Resources/XRSimulationPreferences.asset.meta new file mode 100644 index 0000000..4e51555 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/Resources/XRSimulationPreferences.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0366433b78d9309458579e179de9e4ca +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/SimulationEnvironmentAssetsManager.asset b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/SimulationEnvironmentAssetsManager.asset new file mode 100644 index 0000000..1458a92 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/SimulationEnvironmentAssetsManager.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 378fb4eec0f59ac4c95c0d5b227aa85e, type: 3} + m_Name: SimulationEnvironmentAssetsManager + m_EditorClassIdentifier: + m_EnvironmentPrefabPaths: + - Packages/com.unity.xr.arfoundation/Assets/Prefabs/DefaultSimulationEnvironment.prefab + m_FallbackAtEndOfList: 0 diff --git a/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/SimulationEnvironmentAssetsManager.asset.meta b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/SimulationEnvironmentAssetsManager.asset.meta new file mode 100644 index 0000000..1268236 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/UserSimulationSettings/SimulationEnvironmentAssetsManager.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fb57c82079a3b744087bd104857d91b9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Assets/XR/XRGeneralSettingsPerBuildTarget.asset b/example_unity_6000_0_project/Assets/XR/XRGeneralSettingsPerBuildTarget.asset new file mode 100644 index 0000000..c9ceff7 --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/XRGeneralSettingsPerBuildTarget.asset @@ -0,0 +1,111 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8628359166475515469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4c3631f5e58749a59194e0cf6baf6d5, type: 3} + m_Name: iPhone Providers + m_EditorClassIdentifier: + m_RequiresSettingsUpdate: 0 + m_AutomaticLoading: 0 + m_AutomaticRunning: 0 + m_Loaders: + - {fileID: 11400000, guid: e29e31b142fae0c41975239d1fed675f, type: 2} +--- !u!114 &-2340785663494227106 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d236b7d11115f2143951f1e14045df39, type: 3} + m_Name: iPhone Settings + m_EditorClassIdentifier: + m_LoaderManagerInstance: {fileID: -8628359166475515469} + m_InitManagerOnStart: 1 +--- !u!114 &-1989131375321214812 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d236b7d11115f2143951f1e14045df39, type: 3} + m_Name: Android Settings + m_EditorClassIdentifier: + m_LoaderManagerInstance: {fileID: -1474862251680273687} + m_InitManagerOnStart: 1 +--- !u!114 &-1474862251680273687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4c3631f5e58749a59194e0cf6baf6d5, type: 3} + m_Name: Android Providers + m_EditorClassIdentifier: + m_RequiresSettingsUpdate: 0 + m_AutomaticLoading: 0 + m_AutomaticRunning: 0 + m_Loaders: + - {fileID: 11400000, guid: 09b81a759ffba5545879e1d8114e907d, type: 2} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2dc886499c26824283350fa532d087d, type: 3} + m_Name: XRGeneralSettingsPerBuildTarget + m_EditorClassIdentifier: + Keys: 070000000400000001000000 + Values: + - {fileID: -1989131375321214812} + - {fileID: -2340785663494227106} + - {fileID: 6856986676087574550} +--- !u!114 &6856986676087574550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d236b7d11115f2143951f1e14045df39, type: 3} + m_Name: Standalone Settings + m_EditorClassIdentifier: + m_LoaderManagerInstance: {fileID: 6902881863243311110} + m_InitManagerOnStart: 1 +--- !u!114 &6902881863243311110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4c3631f5e58749a59194e0cf6baf6d5, type: 3} + m_Name: Standalone Providers + m_EditorClassIdentifier: + m_RequiresSettingsUpdate: 0 + m_AutomaticLoading: 0 + m_AutomaticRunning: 0 + m_Loaders: [] diff --git a/example_unity_6000_0_project/Assets/XR/XRGeneralSettingsPerBuildTarget.asset.meta b/example_unity_6000_0_project/Assets/XR/XRGeneralSettingsPerBuildTarget.asset.meta new file mode 100644 index 0000000..c1d9c3a --- /dev/null +++ b/example_unity_6000_0_project/Assets/XR/XRGeneralSettingsPerBuildTarget.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 092a8980423e11b459eada1167b92f7a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/example_unity_6000_0_project/Packages/manifest.json b/example_unity_6000_0_project/Packages/manifest.json new file mode 100644 index 0000000..aa9a44d --- /dev/null +++ b/example_unity_6000_0_project/Packages/manifest.json @@ -0,0 +1,48 @@ +{ + "dependencies": { + "com.unity.collab-proxy": "2.3.1", + "com.unity.ide.rider": "3.0.28", + "com.unity.ide.visualstudio": "2.0.22", + "com.unity.render-pipelines.universal": "17.0.3", + "com.unity.test-framework": "1.4.4", + "com.unity.timeline": "1.8.7", + "com.unity.ugui": "2.0.0", + "com.unity.visualscripting": "1.9.4", + "com.unity.xr.arcore": "6.0.2", + "com.unity.xr.arfoundation": "6.0.2", + "com.unity.xr.arkit": "6.0.2", + "com.unity.xr.management": "4.4.1", + "com.unity.modules.accessibility": "1.0.0", + "com.unity.modules.ai": "1.0.0", + "com.unity.modules.androidjni": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.cloth": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.terrainphysics": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.vehicles": "1.0.0", + "com.unity.modules.video": "1.0.0", + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.wind": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } +} diff --git a/example_unity_6000_0_project/Packages/packages-lock.json b/example_unity_6000_0_project/Packages/packages-lock.json new file mode 100644 index 0000000..06a130e --- /dev/null +++ b/example_unity_6000_0_project/Packages/packages-lock.json @@ -0,0 +1,529 @@ +{ + "dependencies": { + "com.unity.burst": { + "version": "1.8.16", + "depth": 2, + "source": "registry", + "dependencies": { + "com.unity.mathematics": "1.2.1", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.collab-proxy": { + "version": "2.3.1", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.collections": { + "version": "2.4.1", + "depth": 2, + "source": "registry", + "dependencies": { + "com.unity.burst": "1.8.13", + "com.unity.nuget.mono-cecil": "1.11.4", + "com.unity.test-framework": "1.4.3", + "com.unity.test-framework.performance": "3.0.3" + }, + "url": "https://packages.unity.com" + }, + "com.unity.editorcoroutines": { + "version": "1.0.0", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.ext.nunit": { + "version": "2.0.5", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.ide.rider": { + "version": "3.0.28", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ext.nunit": "1.0.6" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ide.visualstudio": { + "version": "2.0.22", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.9" + }, + "url": "https://packages.unity.com" + }, + "com.unity.inputsystem": { + "version": "1.8.2", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.modules.uielements": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.mathematics": { + "version": "1.3.2", + "depth": 2, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.nuget.mono-cecil": { + "version": "1.11.4", + "depth": 3, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.render-pipelines.core": { + "version": "17.0.3", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.burst": "1.8.14", + "com.unity.mathematics": "1.3.2", + "com.unity.ugui": "2.0.0", + "com.unity.collections": "2.4.1", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.rendering.light-transport": "1.0.1" + } + }, + "com.unity.render-pipelines.universal": { + "version": "17.0.3", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.render-pipelines.core": "17.0.3", + "com.unity.shadergraph": "17.0.3", + "com.unity.render-pipelines.universal-config": "17.0.3" + } + }, + "com.unity.render-pipelines.universal-config": { + "version": "17.0.3", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.render-pipelines.core": "17.0.3" + } + }, + "com.unity.rendering.light-transport": { + "version": "1.0.1", + "depth": 2, + "source": "builtin", + "dependencies": { + "com.unity.collections": "2.2.0", + "com.unity.mathematics": "1.2.4", + "com.unity.modules.terrain": "1.0.0" + } + }, + "com.unity.searcher": { + "version": "4.9.2", + "depth": 2, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.shadergraph": { + "version": "17.0.3", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.render-pipelines.core": "17.0.3", + "com.unity.searcher": "4.9.2" + } + }, + "com.unity.test-framework": { + "version": "1.4.4", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ext.nunit": "2.0.3", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.test-framework.performance": { + "version": "3.0.3", + "depth": 3, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.31", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.timeline": { + "version": "1.8.7", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.director": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ugui": { + "version": "2.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0" + } + }, + "com.unity.visualscripting": { + "version": "1.9.4", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ugui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.xr.arcore": { + "version": "6.0.2", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.xr.arfoundation": "6.0.2", + "com.unity.xr.core-utils": "2.2.2", + "com.unity.xr.management": "4.4.0", + "com.unity.modules.androidjni": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.xr.arfoundation": { + "version": "6.0.2", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.editorcoroutines": "1.0.0", + "com.unity.inputsystem": "1.6.3", + "com.unity.xr.core-utils": "2.3.0", + "com.unity.xr.management": "4.4.0", + "com.unity.ugui": "2.0.0", + "com.unity.mathematics": "1.2.6", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.xr.arkit": { + "version": "6.0.2", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.editorcoroutines": "1.0.0", + "com.unity.xr.arfoundation": "6.0.2", + "com.unity.xr.core-utils": "2.2.2", + "com.unity.xr.management": "4.4.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.xr.core-utils": { + "version": "2.3.0", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.modules.xr": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.xr.legacyinputhelpers": { + "version": "2.1.10", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.xr": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.xr.management": { + "version": "4.4.1", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.subsystems": "1.0.0", + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.xr": "1.0.0", + "com.unity.xr.legacyinputhelpers": "2.1.7" + }, + "url": "https://packages.unity.com" + }, + "com.unity.modules.accessibility": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.ai": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.androidjni": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.animation": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.assetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.audio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.cloth": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.director": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.animation": "1.0.0" + } + }, + "com.unity.modules.hierarchycore": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imageconversion": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imgui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.jsonserialize": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.particlesystem": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics2d": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.screencapture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.subsystems": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.terrain": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.terrainphysics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.terrain": "1.0.0" + } + }, + "com.unity.modules.tilemap": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics2d": "1.0.0" + } + }, + "com.unity.modules.ui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.uielements": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.hierarchycore": "1.0.0" + } + }, + "com.unity.modules.umbra": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unityanalytics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.unitywebrequest": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unitywebrequestassetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestaudio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.audio": "1.0.0" + } + }, + "com.unity.modules.unitywebrequesttexture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestwww": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.vehicles": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.video": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.vr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } + }, + "com.unity.modules.wind": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.xr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.subsystems": "1.0.0" + } + } + } +} diff --git a/example_unity_6000_0_project/ProjectSettings/AudioManager.asset b/example_unity_6000_0_project/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..27287fe --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/AudioManager.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 + m_RequestedDSPBufferSize: 0 diff --git a/example_unity_6000_0_project/ProjectSettings/BurstAotSettings_Android.json b/example_unity_6000_0_project/ProjectSettings/BurstAotSettings_Android.json new file mode 100644 index 0000000..ce2d8aa --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/BurstAotSettings_Android.json @@ -0,0 +1,17 @@ +{ + "MonoBehaviour": { + "Version": 4, + "EnableBurstCompilation": true, + "EnableOptimisations": true, + "EnableSafetyChecks": false, + "EnableDebugInAllBuilds": false, + "DebugDataKind": 1, + "EnableArmv9SecurityFeatures": false, + "CpuMinTargetX32": 0, + "CpuMaxTargetX32": 0, + "CpuMinTargetX64": 0, + "CpuMaxTargetX64": 0, + "CpuTargetsArm64": 512, + "OptimizeFor": 0 + } +} diff --git a/example_unity_6000_0_project/ProjectSettings/BurstAotSettings_StandaloneWindows.json b/example_unity_6000_0_project/ProjectSettings/BurstAotSettings_StandaloneWindows.json new file mode 100644 index 0000000..2144f6d --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/BurstAotSettings_StandaloneWindows.json @@ -0,0 +1,16 @@ +{ + "MonoBehaviour": { + "Version": 3, + "EnableBurstCompilation": true, + "EnableOptimisations": true, + "EnableSafetyChecks": false, + "EnableDebugInAllBuilds": false, + "UsePlatformSDKLinker": false, + "CpuMinTargetX32": 0, + "CpuMaxTargetX32": 0, + "CpuMinTargetX64": 0, + "CpuMaxTargetX64": 0, + "CpuTargetsX32": 6, + "CpuTargetsX64": 72 + } +} diff --git a/example_unity_6000_0_project/ProjectSettings/BurstAotSettings_iOS.json b/example_unity_6000_0_project/ProjectSettings/BurstAotSettings_iOS.json new file mode 100644 index 0000000..eed54c3 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/BurstAotSettings_iOS.json @@ -0,0 +1,16 @@ +{ + "MonoBehaviour": { + "Version": 4, + "EnableBurstCompilation": true, + "EnableOptimisations": true, + "EnableSafetyChecks": false, + "EnableDebugInAllBuilds": false, + "DebugDataKind": 1, + "EnableArmv9SecurityFeatures": false, + "CpuMinTargetX32": 0, + "CpuMaxTargetX32": 0, + "CpuMinTargetX64": 0, + "CpuMaxTargetX64": 0, + "OptimizeFor": 0 + } +} diff --git a/example_unity_6000_0_project/ProjectSettings/ClusterInputManager.asset b/example_unity_6000_0_project/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/example_unity_6000_0_project/ProjectSettings/CommonBurstAotSettings.json b/example_unity_6000_0_project/ProjectSettings/CommonBurstAotSettings.json new file mode 100644 index 0000000..0293daf --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/CommonBurstAotSettings.json @@ -0,0 +1,6 @@ +{ + "MonoBehaviour": { + "Version": 4, + "DisabledWarnings": "" + } +} diff --git a/example_unity_6000_0_project/ProjectSettings/DynamicsManager.asset b/example_unity_6000_0_project/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..1596c42 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,36 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0.1 + m_ClothInterCollisionStiffness: 0.2 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 0 + m_ClothInterCollisionSettingsToggle: 0 + m_ClothGravity: {x: 0, y: -9.81, z: 0} + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 + m_FrictionType: 0 + m_EnableEnhancedDeterminism: 0 + m_EnableUnifiedHeightmaps: 1 + m_SolverType: 0 + m_DefaultMaxAngularSpeed: 50 diff --git a/example_unity_6000_0_project/ProjectSettings/EditorBuildSettings.asset b/example_unity_6000_0_project/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..086fdc1 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: + - enabled: 1 + path: Assets/Example/Scenes/FlutterEmbedExampleScene.unity + guid: 99c9720ab356a0642a771bea13969a05 + - enabled: 1 + path: Assets/Example/Scenes/FlutterEmbedExampleSceneAR.unity + guid: c39b9dfab960f5f48bef5c5cb5ecc4b6 + m_configObjects: + UnityEditor.XR.ARCore.ARCoreSettings: {fileID: 11400000, guid: 814ab6c01ebf3674a989665a56cc192f, + type: 2} + UnityEditor.XR.ARKit.ARKitSettings: {fileID: 11400000, guid: af33930b30debe2468b7f1d0a834679f, + type: 2} + com.unity.xr.arfoundation.simulation_settings: {fileID: 11400000, guid: 949df4f5018867b40a4a9e6b8dcb054f, + type: 2} + com.unity.xr.management.loader_settings: {fileID: 11400000, guid: 092a8980423e11b459eada1167b92f7a, + type: 2} diff --git a/example_unity_6000_0_project/ProjectSettings/EditorSettings.asset b/example_unity_6000_0_project/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..c8da44e --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/EditorSettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_ExternalVersionControlSupport: Visible Meta Files + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 2 + m_DefaultBehaviorMode: 0 + m_PrefabRegularEnvironment: {fileID: 0} + m_PrefabUIEnvironment: {fileID: 0} + m_SpritePackerMode: 0 + m_SpritePackerPaddingPower: 1 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp + m_ProjectGenerationRootNamespace: + m_CollabEditorSettings: + inProgressEnabled: 1 + m_EnableTextureStreamingInEditMode: 1 + m_EnableTextureStreamingInPlayMode: 1 + m_AsyncShaderCompilation: 1 + m_EnterPlayModeOptionsEnabled: 0 + m_EnterPlayModeOptions: 3 + m_ShowLightmapResolutionOverlay: 1 + m_UseLegacyProbeSampleCount: 0 + m_AssetPipelineMode: 1 + m_CacheServerMode: 0 + m_CacheServerEndpoint: + m_CacheServerNamespacePrefix: default + m_CacheServerEnableDownload: 1 + m_CacheServerEnableUpload: 1 diff --git a/example_unity_6000_0_project/ProjectSettings/GraphicsSettings.asset b/example_unity_6000_0_project/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..49ee382 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,70 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 16 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_VideoShadersIncludeMode: 2 + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_PreloadShadersBatchTimeLimit: -1 + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, + type: 0} + m_CustomRenderPipeline: {fileID: 11400000, guid: 7b7fd9122c28c4d15b667c7040e3b3fd, + type: 2} + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_InstancingStripping: 0 + m_BrgStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepShadowMask: 1 + m_LightmapKeepSubtractive: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 + m_AlbedoSwatchInfos: [] + m_RenderPipelineGlobalSettingsMap: + UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 18dc0cd2c080841dea60987a38ce93fa, + type: 2} + m_LightsUseLinearIntensity: 1 + m_LightsUseColorTemperature: 1 + m_LogWhenShaderIsCompiled: 0 + m_LightProbeOutsideHullStrategy: 0 + m_CameraRelativeLightCulling: 0 + m_CameraRelativeShadowCulling: 0 diff --git a/example_unity_6000_0_project/ProjectSettings/InputManager.asset b/example_unity_6000_0_project/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..b16147e --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/InputManager.asset @@ -0,0 +1,487 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Enable Debug Button 1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: joystick button 8 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Enable Debug Button 2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: backspace + altNegativeButton: + altPositiveButton: joystick button 9 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Reset + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Next + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: page down + altNegativeButton: + altPositiveButton: joystick button 5 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Previous + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: page up + altNegativeButton: + altPositiveButton: joystick button 4 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Validate + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Persistent + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: right shift + altNegativeButton: + altPositiveButton: joystick button 2 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Multiplier + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: joystick button 3 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 2 + axis: 6 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 2 + axis: 5 + joyNum: 0 diff --git a/example_unity_6000_0_project/ProjectSettings/MemorySettings.asset b/example_unity_6000_0_project/ProjectSettings/MemorySettings.asset new file mode 100644 index 0000000..5b5face --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/MemorySettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!387306366 &1 +MemorySettings: + m_ObjectHideFlags: 0 + m_EditorMemorySettings: + m_MainAllocatorBlockSize: -1 + m_ThreadAllocatorBlockSize: -1 + m_MainGfxBlockSize: -1 + m_ThreadGfxBlockSize: -1 + m_CacheBlockSize: -1 + m_TypetreeBlockSize: -1 + m_ProfilerBlockSize: -1 + m_ProfilerEditorBlockSize: -1 + m_BucketAllocatorGranularity: -1 + m_BucketAllocatorBucketsCount: -1 + m_BucketAllocatorBlockSize: -1 + m_BucketAllocatorBlockCount: -1 + m_ProfilerBucketAllocatorGranularity: -1 + m_ProfilerBucketAllocatorBucketsCount: -1 + m_ProfilerBucketAllocatorBlockSize: -1 + m_ProfilerBucketAllocatorBlockCount: -1 + m_TempAllocatorSizeMain: -1 + m_JobTempAllocatorBlockSize: -1 + m_BackgroundJobTempAllocatorBlockSize: -1 + m_JobTempAllocatorReducedBlockSize: -1 + m_TempAllocatorSizeGIBakingWorker: -1 + m_TempAllocatorSizeNavMeshWorker: -1 + m_TempAllocatorSizeAudioWorker: -1 + m_TempAllocatorSizeCloudWorker: -1 + m_TempAllocatorSizeGfx: -1 + m_TempAllocatorSizeJobWorker: -1 + m_TempAllocatorSizeBackgroundWorker: -1 + m_TempAllocatorSizePreloadManager: -1 + m_PlatformMemorySettings: {} diff --git a/example_unity_6000_0_project/ProjectSettings/MultiplayerManager.asset b/example_unity_6000_0_project/ProjectSettings/MultiplayerManager.asset new file mode 100644 index 0000000..2a93664 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/MultiplayerManager.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!655991488 &1 +MultiplayerManager: + m_ObjectHideFlags: 0 + m_EnableMultiplayerRoles: 0 + m_StrippingTypes: {} diff --git a/example_unity_6000_0_project/ProjectSettings/NavMeshAreas.asset b/example_unity_6000_0_project/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..3b0b7c3 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/example_unity_6000_0_project/ProjectSettings/PackageManagerSettings.asset b/example_unity_6000_0_project/ProjectSettings/PackageManagerSettings.asset new file mode 100644 index 0000000..be4a797 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/PackageManagerSettings.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_EnablePreviewPackages: 0 + m_EnablePackageDependencies: 0 + m_AdvancedSettingsExpanded: 1 + m_ScopedRegistriesSettingsExpanded: 1 + oneTimeWarningShown: 0 + m_Registries: + - m_Id: main + m_Name: + m_Url: https://packages.unity.com + m_Scopes: [] + m_IsDefault: 1 + m_Capabilities: 7 + m_UserSelectedRegistryName: + m_UserAddingNewScopedRegistry: 0 + m_RegistryInfoDraft: + m_ErrorMessage: + m_Original: + m_Id: + m_Name: + m_Url: + m_Scopes: [] + m_IsDefault: 0 + m_Capabilities: 0 + m_Modified: 0 + m_Name: + m_Url: + m_Scopes: + - + m_SelectedScopeIndex: 0 diff --git a/example_unity_6000_0_project/ProjectSettings/Physics2DSettings.asset b/example_unity_6000_0_project/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..6c5cf8a --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_JobOptions: + serializedVersion: 2 + useMultithreading: 0 + useConsistencySorting: 0 + m_InterpolationPosesPerJob: 100 + m_NewContactsPerJob: 30 + m_CollideContactsPerJob: 100 + m_ClearFlagsPerJob: 200 + m_ClearBodyForcesPerJob: 200 + m_SyncDiscreteFixturesPerJob: 50 + m_SyncContinuousFixturesPerJob: 50 + m_FindNearestContactsPerJob: 100 + m_UpdateTriggerContactsPerJob: 100 + m_IslandSolverCostThreshold: 100 + m_IslandSolverBodyCostScale: 1 + m_IslandSolverContactCostScale: 10 + m_IslandSolverJointCostScale: 10 + m_IslandSolverBodiesPerJob: 50 + m_IslandSolverContactsPerJob: 50 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 0 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/example_unity_6000_0_project/ProjectSettings/PresetManager.asset b/example_unity_6000_0_project/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..67a94da --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/PresetManager.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_DefaultPresets: {} diff --git a/example_unity_6000_0_project/ProjectSettings/ProjectSettings.asset b/example_unity_6000_0_project/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..27e2d03 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,949 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 28 + productGUID: 1e6e3da5ff17ca941a66643c3affdf53 + AndroidProfiler: 0 + AndroidFilterTouchesWhenObscured: 0 + AndroidEnableSustainedPerformanceMode: 0 + defaultScreenOrientation: 4 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: DefaultCompany + productName: FlutterEmbedUnityExample + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} + m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashLogo: 1 + m_SplashScreenOverlayOpacity: 1 + m_SplashScreenAnimation: 1 + m_SplashScreenLogoStyle: 1 + m_SplashScreenDrawMode: 0 + m_SplashScreenBackgroundAnimationZoom: 1 + m_SplashScreenLogoAnimationZoom: 1 + m_SplashScreenBackgroundLandscapeAspect: 1 + m_SplashScreenBackgroundPortraitAspect: 1 + m_SplashScreenBackgroundLandscapeUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenBackgroundPortraitUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenLogos: [] + m_VirtualRealitySplashScreen: {fileID: 0} + m_HolographicTrackingLossScreen: {fileID: 0} + defaultScreenWidth: 1024 + defaultScreenHeight: 768 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_StereoRenderingPath: 0 + m_ActiveColorSpace: 1 + unsupportedMSAAFallback: 0 + m_SpriteBatchVertexThreshold: 300 + m_MTRendering: 1 + mipStripping: 0 + numberOfMipsStripped: 0 + numberOfMipsStrippedPerMipmapLimitGroup: {} + m_StackTraceTypes: 010000000100000001000000010000000100000001000000 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + iosUseCustomAppBackgroundBehavior: 0 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + preserveFramebufferAlpha: 0 + disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 0 + androidRenderOutsideSafeArea: 1 + androidUseSwappy: 0 + androidBlitType: 0 + androidResizeableActivity: 1 + androidDefaultWindowWidth: 1920 + androidDefaultWindowHeight: 1080 + androidMinimumWindowWidth: 400 + androidMinimumWindowHeight: 300 + androidFullscreenMode: 1 + androidAutoRotationBehavior: 1 + androidPredictiveBackSupport: 0 + androidApplicationEntry: 1 + defaultIsNativeResolution: 1 + macRetinaSupport: 1 + runInBackground: 0 + captureSingleScreen: 0 + muteOtherAudioSources: 0 + Prepare IOS For Recording: 0 + Force IOS Speakers When Recording: 0 + deferSystemGesturesMode: 0 + hideHomeButton: 0 + submitAnalytics: 1 + usePlayerLog: 1 + dedicatedServerOptimizations: 0 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + useFlipModelSwapchain: 1 + resizableWindow: 0 + useMacAppStoreValidation: 0 + macAppStoreCategory: public.app-category.games + gpuSkinning: 1 + meshDeformation: 2 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 1 + allowFullscreenSwitch: 1 + fullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + metalFramebufferOnly: 0 + xboxOneResolution: 0 + xboxOneSResolution: 0 + xboxOneXResolution: 3 + xboxOneMonoLoggingLevel: 0 + xboxOneLoggingLevel: 1 + xboxOneDisableEsram: 0 + xboxOneEnableTypeOptimization: 0 + xboxOnePresentImmediateThreshold: 0 + switchQueueCommandMemory: 1048576 + switchQueueControlMemory: 16384 + switchQueueComputeMemory: 262144 + switchNVNShaderPoolsGranularity: 33554432 + switchNVNDefaultPoolsGranularity: 16777216 + switchNVNOtherPoolsGranularity: 16777216 + switchGpuScratchPoolGranularity: 2097152 + switchAllowGpuScratchShrinking: 0 + switchNVNMaxPublicTextureIDCount: 0 + switchNVNMaxPublicSamplerIDCount: 0 + switchMaxWorkerMultiple: 8 + switchNVNGraphicsFirmwareMemory: 32 + vulkanNumSwapchainBuffers: 3 + vulkanEnableSetSRGBWrite: 0 + vulkanEnablePreTransform: 1 + vulkanEnableLateAcquireNextImage: 0 + vulkanEnableCommandBufferRecycling: 1 + loadStoreDebugModeEnabled: 0 + visionOSBundleVersion: 1.0 + tvOSBundleVersion: 1.0 + bundleVersion: 0.1.0 + preloadedAssets: [] + metroInputSource: 0 + wsaTransparentSwapchain: 0 + m_HolographicPauseOnTrackingLoss: 1 + xboxOneDisableKinectGpuReservation: 1 + xboxOneEnable7thCore: 1 + vrSettings: + enable360StereoCapture: 0 + isWsaHolographicRemotingEnabled: 0 + enableFrameTimingStats: 0 + enableOpenGLProfilerGPURecorders: 1 + allowHDRDisplaySupport: 0 + useHDRDisplay: 0 + hdrBitDepth: 0 + m_ColorGamuts: 00000000 + targetPixelDensity: 30 + resolutionScalingMode: 0 + resetResolutionOnWindowResize: 1 + androidSupportedAspectRatio: 1 + androidMaxAspectRatio: 2.1 + androidMinAspectRatio: 1 + applicationIdentifier: + Android: com.UnityTechnologies.com.unity.template.urpblank + Standalone: com.Unity-Technologies.com.unity.template.urp-blank + iPhone: com.Unity-Technologies.com.unity.template.urp-blank + buildNumber: + Standalone: 0 + VisionOS: 0 + iPhone: 0 + tvOS: 0 + overrideDefaultApplicationIdentifier: 1 + AndroidBundleVersionCode: 1 + AndroidMinSdkVersion: 23 + AndroidTargetSdkVersion: 34 + AndroidPreferredInstallLocation: 1 + aotOptions: + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + androidSplitApplicationBinary: 0 + keepLoadedShadersAlive: 0 + StripUnusedMeshComponents: 0 + strictShaderVariantMatching: 0 + VertexChannelCompressionMask: 4054 + iPhoneSdkVersion: 988 + iOSSimulatorArchitecture: 0 + iOSTargetOSVersionString: 13.0 + tvOSSdkVersion: 0 + tvOSSimulatorArchitecture: 0 + tvOSRequireExtendedGameController: 0 + tvOSTargetOSVersionString: 13.0 + VisionOSSdkVersion: 0 + VisionOSTargetOSVersionString: 1.0 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + appleTVSplashScreen: {fileID: 0} + appleTVSplashScreen2x: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSSmallIconLayers2x: [] + tvOSLargeIconLayers: [] + tvOSLargeIconLayers2x: [] + tvOSTopShelfImageLayers: [] + tvOSTopShelfImageLayers2x: [] + tvOSTopShelfImageWideLayers: [] + tvOSTopShelfImageWideLayers2x: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreenCustomStoryboardPath: + iOSLaunchScreeniPadCustomStoryboardPath: + iOSDeviceRequirements: [] + iOSURLSchemes: [] + macOSURLSchemes: [] + iOSBackgroundModes: 0 + iOSMetalForceHardShadows: 0 + metalEditorSupport: 1 + metalAPIValidation: 1 + metalCompileShaderBinary: 0 + iOSRenderExtraFrameOnPause: 0 + iosCopyPluginsCodeInsteadOfSymlink: 0 + appleDeveloperTeamID: + iOSManualSigningProvisioningProfileID: + tvOSManualSigningProvisioningProfileID: + VisionOSManualSigningProvisioningProfileID: + iOSManualSigningProvisioningProfileType: 0 + tvOSManualSigningProvisioningProfileType: 0 + VisionOSManualSigningProvisioningProfileType: 0 + appleEnableAutomaticSigning: 0 + iOSRequireARKit: 0 + iOSAutomaticallyDetectAndAddCapabilities: 1 + appleEnableProMotion: 0 + shaderPrecisionModel: 0 + clonedFromGUID: 3c72c65a16f0acb438eed22b8b16c24a + templatePackageId: com.unity.template.urp-blank@3.0.2 + templateDefaultScene: Assets/Scenes/SampleScene.unity + useCustomMainManifest: 0 + useCustomLauncherManifest: 0 + useCustomMainGradleTemplate: 0 + useCustomLauncherGradleManifest: 0 + useCustomBaseGradleTemplate: 0 + useCustomGradlePropertiesTemplate: 0 + useCustomGradleSettingsTemplate: 0 + useCustomProguardFile: 0 + AndroidTargetArchitectures: 3 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidEnableArmv9SecurityFeatures: 0 + AndroidEnableArm64MTE: 0 + AndroidBuildApkPerCpuArchitecture: 0 + AndroidTVCompatibility: 0 + AndroidIsGame: 1 + AndroidEnableTango: 0 + androidEnableBanner: 1 + androidUseLowAccuracyLocation: 0 + androidUseCustomKeystore: 0 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + AndroidMinifyRelease: 0 + AndroidMinifyDebug: 0 + AndroidValidateAppBundleSize: 1 + AndroidAppBundleSizeToValidate: 150 + AndroidReportGooglePlayAppDependencies: 1 + androidSymbolsSizeThreshold: 800 + m_BuildTargetIcons: [] + m_BuildTargetPlatformIcons: + - m_BuildTarget: iPhone + m_Icons: + - m_Textures: [] + m_Width: 180 + m_Height: 180 + m_Kind: 0 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 120 + m_Height: 120 + m_Kind: 0 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 167 + m_Height: 167 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 152 + m_Height: 152 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 76 + m_Height: 76 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 120 + m_Height: 120 + m_Kind: 3 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 80 + m_Height: 80 + m_Kind: 3 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 80 + m_Height: 80 + m_Kind: 3 + m_SubKind: iPad + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 3 + m_SubKind: iPad + - m_Textures: [] + m_Width: 87 + m_Height: 87 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 58 + m_Height: 58 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 29 + m_Height: 29 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 58 + m_Height: 58 + m_Kind: 1 + m_SubKind: iPad + - m_Textures: [] + m_Width: 29 + m_Height: 29 + m_Kind: 1 + m_SubKind: iPad + - m_Textures: [] + m_Width: 60 + m_Height: 60 + m_Kind: 2 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 2 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 2 + m_SubKind: iPad + - m_Textures: [] + m_Width: 20 + m_Height: 20 + m_Kind: 2 + m_SubKind: iPad + - m_Textures: [] + m_Width: 1024 + m_Height: 1024 + m_Kind: 4 + m_SubKind: App Store + - m_BuildTarget: Android + m_Icons: + - m_Textures: [] + m_Width: 432 + m_Height: 432 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 324 + m_Height: 324 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 216 + m_Height: 216 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 162 + m_Height: 162 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 108 + m_Height: 108 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 81 + m_Height: 81 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 0 + m_SubKind: + - m_BuildTarget: tvOS + m_Icons: + - m_Textures: [] + m_Width: 1280 + m_Height: 768 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 800 + m_Height: 480 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 400 + m_Height: 240 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 4640 + m_Height: 1440 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 2320 + m_Height: 720 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 3840 + m_Height: 1440 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 1920 + m_Height: 720 + m_Kind: 1 + m_SubKind: + m_BuildTargetBatching: [] + m_BuildTargetShaderSettings: [] + m_BuildTargetGraphicsJobs: [] + m_BuildTargetGraphicsJobMode: [] + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: AndroidPlayer + m_APIs: 0b00000015000000 + m_Automatic: 0 + m_BuildTargetVRSettings: [] + m_DefaultShaderChunkSizeInMB: 16 + m_DefaultShaderChunkCount: 0 + openGLRequireES31: 0 + openGLRequireES31AEP: 0 + openGLRequireES32: 0 + m_TemplateCustomTags: {} + mobileMTRendering: + Android: 1 + iPhone: 1 + tvOS: 1 + m_BuildTargetGroupLightmapEncodingQuality: + - serializedVersion: 2 + m_BuildTarget: Android + m_EncodingQuality: 1 + m_BuildTargetGroupLightmapSettings: [] + m_BuildTargetGroupLoadStoreDebugModeSettings: [] + m_BuildTargetNormalMapEncoding: + - m_BuildTarget: Android + m_Encoding: 1 + m_BuildTargetDefaultTextureCompressionFormat: + - serializedVersion: 3 + m_BuildTarget: Android + m_Formats: 03000000 + playModeTestRunnerEnabled: 0 + runPlayModeTestAsEditModeTest: 0 + actionOnDotNetUnhandledException: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + cameraUsageDescription: To demo VR capabilities of the plugin + locationUsageDescription: + microphoneUsageDescription: + bluetoothUsageDescription: + macOSTargetOSVersion: 11.0 + switchNMETAOverride: + switchNetLibKey: + switchSocketMemoryPoolSize: 6144 + switchSocketAllocatorPoolSize: 128 + switchSocketConcurrencyLimit: 14 + switchScreenResolutionBehavior: 2 + switchUseCPUProfiler: 0 + switchEnableFileSystemTrace: 0 + switchLTOSetting: 0 + switchApplicationID: 0x01004b9000490000 + switchNSODependencies: + switchCompilerFlags: + switchTitleNames_0: + switchTitleNames_1: + switchTitleNames_2: + switchTitleNames_3: + switchTitleNames_4: + switchTitleNames_5: + switchTitleNames_6: + switchTitleNames_7: + switchTitleNames_8: + switchTitleNames_9: + switchTitleNames_10: + switchTitleNames_11: + switchTitleNames_12: + switchTitleNames_13: + switchTitleNames_14: + switchTitleNames_15: + switchPublisherNames_0: + switchPublisherNames_1: + switchPublisherNames_2: + switchPublisherNames_3: + switchPublisherNames_4: + switchPublisherNames_5: + switchPublisherNames_6: + switchPublisherNames_7: + switchPublisherNames_8: + switchPublisherNames_9: + switchPublisherNames_10: + switchPublisherNames_11: + switchPublisherNames_12: + switchPublisherNames_13: + switchPublisherNames_14: + switchPublisherNames_15: + switchIcons_0: {fileID: 0} + switchIcons_1: {fileID: 0} + switchIcons_2: {fileID: 0} + switchIcons_3: {fileID: 0} + switchIcons_4: {fileID: 0} + switchIcons_5: {fileID: 0} + switchIcons_6: {fileID: 0} + switchIcons_7: {fileID: 0} + switchIcons_8: {fileID: 0} + switchIcons_9: {fileID: 0} + switchIcons_10: {fileID: 0} + switchIcons_11: {fileID: 0} + switchIcons_12: {fileID: 0} + switchIcons_13: {fileID: 0} + switchIcons_14: {fileID: 0} + switchIcons_15: {fileID: 0} + switchSmallIcons_0: {fileID: 0} + switchSmallIcons_1: {fileID: 0} + switchSmallIcons_2: {fileID: 0} + switchSmallIcons_3: {fileID: 0} + switchSmallIcons_4: {fileID: 0} + switchSmallIcons_5: {fileID: 0} + switchSmallIcons_6: {fileID: 0} + switchSmallIcons_7: {fileID: 0} + switchSmallIcons_8: {fileID: 0} + switchSmallIcons_9: {fileID: 0} + switchSmallIcons_10: {fileID: 0} + switchSmallIcons_11: {fileID: 0} + switchSmallIcons_12: {fileID: 0} + switchSmallIcons_13: {fileID: 0} + switchSmallIcons_14: {fileID: 0} + switchSmallIcons_15: {fileID: 0} + switchManualHTML: + switchAccessibleURLs: + switchLegalInformation: + switchMainThreadStackSize: 1048576 + switchPresenceGroupId: + switchLogoHandling: 0 + switchReleaseVersion: 0 + switchDisplayVersion: 1.0.0 + switchStartupUserAccount: 0 + switchSupportedLanguagesMask: 0 + switchLogoType: 0 + switchApplicationErrorCodeCategory: + switchUserAccountSaveDataSize: 0 + switchUserAccountSaveDataJournalSize: 0 + switchApplicationAttribute: 0 + switchCardSpecSize: -1 + switchCardSpecClock: -1 + switchRatingsMask: 0 + switchRatingsInt_0: 0 + switchRatingsInt_1: 0 + switchRatingsInt_2: 0 + switchRatingsInt_3: 0 + switchRatingsInt_4: 0 + switchRatingsInt_5: 0 + switchRatingsInt_6: 0 + switchRatingsInt_7: 0 + switchRatingsInt_8: 0 + switchRatingsInt_9: 0 + switchRatingsInt_10: 0 + switchRatingsInt_11: 0 + switchRatingsInt_12: 0 + switchLocalCommunicationIds_0: + switchLocalCommunicationIds_1: + switchLocalCommunicationIds_2: + switchLocalCommunicationIds_3: + switchLocalCommunicationIds_4: + switchLocalCommunicationIds_5: + switchLocalCommunicationIds_6: + switchLocalCommunicationIds_7: + switchParentalControl: 0 + switchAllowsScreenshot: 1 + switchAllowsVideoCapturing: 1 + switchAllowsRuntimeAddOnContentInstall: 0 + switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 + switchSystemResourceMemory: 16777216 + switchSupportedNpadStyles: 22 + switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 + switchEnableTouchScreen: 1 + switchSocketConfigEnabled: 0 + switchTcpInitialSendBufferSize: 32 + switchTcpInitialReceiveBufferSize: 64 + switchTcpAutoSendBufferSizeMax: 256 + switchTcpAutoReceiveBufferSizeMax: 256 + switchUdpSendBufferSize: 9 + switchUdpReceiveBufferSize: 42 + switchSocketBufferEfficiency: 4 + switchSocketInitializeEnabled: 1 + switchNetworkInterfaceManagerInitializeEnabled: 1 + switchDisableHTCSPlayerConnection: 0 + switchUseNewStyleFilepaths: 0 + switchUseLegacyFmodPriorities: 0 + switchUseMicroSleepForYield: 1 + switchEnableRamDiskSupport: 0 + switchMicroSleepForYieldTime: 25 + switchRamDiskSpaceSize: 12 + switchUpgradedPlayerSettingsToNMETA: 0 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 11 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutInitialWidth: 1920 + ps4VideoOutBaseModeInitialWidth: 1920 + ps4VideoOutReprojectionRate: 60 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4StartupImagesFolder: + ps4IconImagesFolder: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4ExtraSceSysFile: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 2 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4ProGarlicHeapSize: 2560 + playerPrefsMaxSize: 32768 + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + enableApplicationExit: 0 + resetTempFolder: 1 + restrictedAudioUsageRights: 0 + ps4UseResolutionFallback: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4UseLowGarlicFragmentationMode: 1 + ps4SocialScreenEnabled: 0 + ps4ScriptOptimizationLevel: 2 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4PatchDayOne: 0 + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4attribExclusiveVR: 0 + ps4disableAutoHideSplash: 0 + ps4videoRecordingFeaturesUsed: 0 + ps4contentSearchFeaturesUsed: 0 + ps4CompatibilityPS5: 0 + ps4AllowPS5Detection: 0 + ps4GPU800MHz: 1 + ps4attribEyeToEyeDistanceSettingVR: 0 + ps4IncludedModules: [] + ps4attribVROutputEnabled: 0 + monoEnv: + splashScreenBackgroundSourceLandscape: {fileID: 0} + splashScreenBackgroundSourcePortrait: {fileID: 0} + blurSplashScreenBackground: 1 + spritePackerPolicy: + webGLMemorySize: 32 + webGLExceptionSupport: 1 + webGLNameFilesAsHashes: 0 + webGLShowDiagnostics: 0 + webGLDataCaching: 1 + webGLDebugSymbols: 0 + webGLEmscriptenArgs: + webGLModulesDirectory: + webGLTemplate: APPLICATION:Default + webGLAnalyzeBuildSize: 0 + webGLUseEmbeddedResources: 0 + webGLCompressionFormat: 0 + webGLWasmArithmeticExceptions: 0 + webGLLinkerTarget: 1 + webGLThreadsSupport: 0 + webGLDecompressionFallback: 0 + webGLInitialMemorySize: 32 + webGLMaximumMemorySize: 2048 + webGLMemoryGrowthMode: 2 + webGLMemoryLinearGrowthStep: 16 + webGLMemoryGeometricGrowthStep: 0.2 + webGLMemoryGeometricGrowthCap: 96 + webGLEnableWebGPU: 0 + webGLPowerPreference: 2 + webGLWebAssemblyTable: 0 + webGLWebAssemblyBigInt: 0 + webGLCloseOnQuit: 0 + webWasm2023: 0 + scriptingDefineSymbols: + iPhone: UNITY_XR_ARKIT_LOADER_ENABLED + additionalCompilerArguments: {} + platformArchitecture: {} + scriptingBackend: + Android: 1 + Standalone: 1 + il2cppCompilerConfiguration: + Android: 0 + il2cppCodeGeneration: + Android: 1 + iPhone: 1 + il2cppStacktraceInformation: {} + managedStrippingLevel: + EmbeddedLinux: 1 + GameCoreScarlett: 1 + GameCoreXboxOne: 1 + Nintendo Switch: 1 + PS4: 1 + PS5: 1 + QNX: 1 + Stadia: 1 + VisionOS: 1 + WebGL: 1 + Windows Store Apps: 1 + XboxOne: 1 + iPhone: 1 + tvOS: 1 + incrementalIl2cppBuild: {} + suppressCommonWarnings: 1 + allowUnsafeCode: 0 + useDeterministicCompilation: 1 + additionalIl2CppArgs: + scriptingRuntimeVersion: 1 + gcIncremental: 0 + gcWBarrierValidation: 0 + apiCompatibilityLevelPerPlatform: {} + editorAssembliesCompatibilityLevel: 1 + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + metroPackageName: FlutterEmbedUnityExample + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: FlutterEmbedUnityExample + wsaImages: {} + metroTileShortName: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 2 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, + a: 1} + metroSplashScreenUseBackgroundColor: 0 + syncCapabilities: 0 + platformCapabilities: {} + metroTargetDeviceFamilies: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + vcxProjDefaultLanguage: + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneLanguage: + - enus + XboxOneCapability: [] + XboxOneGameRating: {} + XboxOneIsContentPackage: 0 + XboxOneEnhancedXboxCompatibilityMode: 0 + XboxOneEnableGPUVariability: 1 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + XboxOneXTitleMemory: 8 + XboxOneOverrideIdentityName: + XboxOneOverrideIdentityPublisher: + vrEditorSettings: {} + cloudServicesEnabled: {} + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_SignPackage: 1 + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: + hmiPlayerDataPath: + hmiForceSRGBBlit: 1 + embeddedLinuxEnableGamepadInput: 1 + hmiCpuConfiguration: + hmiLogStartupTiming: 0 + qnxGraphicConfPath: + apiCompatibilityLevel: 6 + captureStartupLogs: {} + activeInputHandler: 1 + windowsGamepadBackendHint: 0 + cloudProjectId: + framebufferDepthMemorylessMode: 0 + qualitySettingsNames: [] + projectName: + organizationId: + cloudEnabled: 0 + legacyClampBlendShapeWeights: 0 + hmiLoadingImage: {fileID: 0} + platformRequiresReadableAssets: 0 + virtualTexturingSupportEnabled: 0 + insecureHttpOption: 0 + androidVulkanDenyFilterList: [] + androidVulkanAllowFilterList: [] diff --git a/example_unity_6000_0_project/ProjectSettings/ProjectVersion.txt b/example_unity_6000_0_project/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..540ac31 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/ProjectVersion.txt @@ -0,0 +1,2 @@ +m_EditorVersion: 6000.0.8f1 +m_EditorVersionWithRevision: 6000.0.8f1 (fa7102f01711) diff --git a/example_unity_6000_0_project/ProjectSettings/QualitySettings.asset b/example_unity_6000_0_project/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..6238eb7 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/QualitySettings.asset @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 2 + m_QualitySettings: + - serializedVersion: 2 + name: Performant + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 2 + textureQuality: 0 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.4 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 11400000, guid: d0e2fc18fe036412f8223b3b3d9ad574, + type: 2} + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Balanced + pixelLightCount: 1 + shadows: 1 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 4 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 1 + lodBias: 1 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 64 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 11400000, guid: e1260c1148f6143b28bae5ace5e9c5d1, + type: 2} + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: High Fidelity + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + skinWeights: 255 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 4 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 2 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 2048 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 11400000, guid: 7b7fd9122c28c4d15b667c7040e3b3fd, + type: 2} + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 1 + CloudRendering: 2 + Lumin: 2 + GameCoreScarlett: 2 + GameCoreXboxOne: 2 + Nintendo Switch: 2 + PS4: 2 + PS5: 2 + Server: 0 + Stadia: 2 + Standalone: 2 + WebGL: 1 + Windows Store Apps: 2 + XboxOne: 2 + iPhone: 1 + tvOS: 1 diff --git a/example_unity_6000_0_project/ProjectSettings/SceneTemplateSettings.json b/example_unity_6000_0_project/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..6f3e60f --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,167 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": false + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicMaterial", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": false + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "ignore": false, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + "newSceneOverride": 0 +} \ No newline at end of file diff --git a/example_unity_6000_0_project/ProjectSettings/ShaderGraphSettings.asset b/example_unity_6000_0_project/ProjectSettings/ShaderGraphSettings.asset new file mode 100644 index 0000000..e66042a --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/ShaderGraphSettings.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de02f9e1d18f588468e474319d09a723, type: 3} + m_Name: + m_EditorClassIdentifier: + shaderVariantLimit: 128 + customInterpolatorErrorThreshold: 32 + customInterpolatorWarningThreshold: 16 + customHeatmapValues: {fileID: 0} diff --git a/example_unity_6000_0_project/ProjectSettings/TagManager.asset b/example_unity_6000_0_project/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..b00eabb --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/TagManager.asset @@ -0,0 +1,52 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 3 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 + m_RenderingLayers: + - Default + - Light Layer 1 + - Light Layer 2 + - Light Layer 3 + - Light Layer 4 + - Light Layer 5 + - Light Layer 6 + - Light Layer 7 diff --git a/example_unity_6000_0_project/ProjectSettings/TimeManager.asset b/example_unity_6000_0_project/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..558a017 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/TimeManager.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.33333334 + m_TimeScale: 1 + Maximum Particle Timestep: 0.03 diff --git a/example_unity_6000_0_project/ProjectSettings/URPProjectSettings.asset b/example_unity_6000_0_project/ProjectSettings/URPProjectSettings.asset new file mode 100644 index 0000000..08faf03 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/URPProjectSettings.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LastMaterialVersion: 9 diff --git a/example_unity_6000_0_project/ProjectSettings/UnityConnectSettings.asset b/example_unity_6000_0_project/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..a88bee0 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,36 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 1 + m_Enabled: 0 + m_TestMode: 0 + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_DashboardUrl: https://dashboard.unity3d.com + m_TestInitMode: 0 + CrashReportingSettings: + m_EventUrl: https://perf-events.cloud.unity3d.com + m_Enabled: 0 + m_LogBufferSize: 10 + m_CaptureEditorExceptions: 1 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_TestMode: 0 + m_InitializeOnStartup: 1 + m_PackageRequiringCoreStatsPresent: 0 + UnityAdsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_IosGameId: + m_AndroidGameId: + m_GameIds: {} + m_GameId: + PerformanceReportingSettings: + m_Enabled: 0 diff --git a/example_unity_6000_0_project/ProjectSettings/VFXManager.asset b/example_unity_6000_0_project/ProjectSettings/VFXManager.asset new file mode 100644 index 0000000..3a95c98 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/VFXManager.asset @@ -0,0 +1,12 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 0} + m_CopyBufferShader: {fileID: 0} + m_SortShader: {fileID: 0} + m_StripUpdateShader: {fileID: 0} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 diff --git a/example_unity_6000_0_project/ProjectSettings/VersionControlSettings.asset b/example_unity_6000_0_project/ProjectSettings/VersionControlSettings.asset new file mode 100644 index 0000000..dca2881 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/VersionControlSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!890905787 &1 +VersionControlSettings: + m_ObjectHideFlags: 0 + m_Mode: Visible Meta Files + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/example_unity_6000_0_project/ProjectSettings/XRPackageSettings.asset b/example_unity_6000_0_project/ProjectSettings/XRPackageSettings.asset new file mode 100644 index 0000000..7e791e1 --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/XRPackageSettings.asset @@ -0,0 +1,5 @@ +{ + "m_Settings": [ + "RemoveLegacyInputHelpersForReload" + ] +} \ No newline at end of file diff --git a/example_unity_6000_0_project/ProjectSettings/XRSettings.asset b/example_unity_6000_0_project/ProjectSettings/XRSettings.asset new file mode 100644 index 0000000..482590c --- /dev/null +++ b/example_unity_6000_0_project/ProjectSettings/XRSettings.asset @@ -0,0 +1,10 @@ +{ + "m_SettingKeys": [ + "VR Device Disabled", + "VR Device User Alert" + ], + "m_SettingValues": [ + "False", + "False" + ] +} \ No newline at end of file diff --git a/example_unity_6000_0_project/README.md b/example_unity_6000_0_project/README.md new file mode 100644 index 0000000..6afd5ed --- /dev/null +++ b/example_unity_6000_0_project/README.md @@ -0,0 +1,5 @@ +# Example Unity project + +Use this Unity project as an example of how to send and receive message from Flutter, or to build [the example Flutter app](https://github.com/jamesncl/flutter_embed_unity/tree/main/flutter_embed_unity/example). + +It is also used to develop the `flutter_embed_unity_2022_3.unitypackage`, including the build scripts which make it easier to integrate the Unity project export into your Flutter app. As an alternative to importing `flutter_embed_unity_2022_3.unitypackage` you could copy the script assets from this project. diff --git a/flutter_embed_unity/pubspec.yaml b/flutter_embed_unity/pubspec.yaml index 57f545b..f919c92 100644 --- a/flutter_embed_unity/pubspec.yaml +++ b/flutter_embed_unity/pubspec.yaml @@ -18,7 +18,9 @@ dependencies: flutter: sdk: flutter flutter_embed_unity_platform_interface: ^1.0.0 - flutter_embed_unity_2022_3_android: ^1.1.0 + # flutter_embed_unity_2022_3_android: ^1.1.0 + flutter_embed_unity_6000_android: + path: ../flutter_embed_unity_6000_android flutter_embed_unity_2022_3_ios: ^1.0.1 dev_dependencies: diff --git a/flutter_embed_unity_6000_android/.gitignore b/flutter_embed_unity_6000_android/.gitignore new file mode 100644 index 0000000..8109248 --- /dev/null +++ b/flutter_embed_unity_6000_android/.gitignore @@ -0,0 +1,33 @@ +# Example unity project build files +example/android/unityLibrary/ + +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.packages +build/ diff --git a/flutter_embed_unity_6000_android/.metadata b/flutter_embed_unity_6000_android/.metadata new file mode 100644 index 0000000..f0a33ef --- /dev/null +++ b/flutter_embed_unity_6000_android/.metadata @@ -0,0 +1,30 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: f468f3366c26a5092eb964a230ce7892fda8f2f8 + channel: stable + +project_type: plugin + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8 + base_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8 + - platform: android + create_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8 + base_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/flutter_embed_unity_6000_android/CHANGELOG.md b/flutter_embed_unity_6000_android/CHANGELOG.md new file mode 100644 index 0000000..cfddc62 --- /dev/null +++ b/flutter_embed_unity_6000_android/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1-alpha + +Based on version 1.1.0 of `flutter_embed_unity_2022_3_android`. \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/LICENSE b/flutter_embed_unity_6000_android/LICENSE new file mode 100644 index 0000000..4d43196 --- /dev/null +++ b/flutter_embed_unity_6000_android/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 James Allen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/README.md b/flutter_embed_unity_6000_android/README.md new file mode 100644 index 0000000..e17aff8 --- /dev/null +++ b/flutter_embed_unity_6000_android/README.md @@ -0,0 +1,21 @@ +# flutter_embed_unity_android + +An Android implementation of [`flutter_embed_unity`][1]. + +## Usage + +### Import the package + +This package has not yet been endorsed. +Besides `flutter_embed_unity`, you should add `flutter_embed_unity_android` as a +dependency: + +```yaml +... +dependencies: + ... + flutter_embed_unity_6000_android: ^0.0.1 + ... +``` + +[1]: https://pub.dev/packages/flutter_embed_unity diff --git a/flutter_embed_unity_6000_android/analysis_options.yaml b/flutter_embed_unity_6000_android/analysis_options.yaml new file mode 100644 index 0000000..a5744c1 --- /dev/null +++ b/flutter_embed_unity_6000_android/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/flutter_embed_unity_6000_android/android/.gitignore b/flutter_embed_unity_6000_android/android/.gitignore new file mode 100644 index 0000000..161bdcd --- /dev/null +++ b/flutter_embed_unity_6000_android/android/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.cxx diff --git a/flutter_embed_unity_6000_android/android/build.gradle b/flutter_embed_unity_6000_android/android/build.gradle new file mode 100644 index 0000000..fe15b63 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/build.gradle @@ -0,0 +1,79 @@ +group 'com.learntoflutter.flutter_embed_unity' +version '1.0-SNAPSHOT' + +buildscript { + ext.kotlin_version = '1.9.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:8.3.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'org.jetbrains.kotlin.android' + +android { + namespace 'com.learntoflutter.flutter_embed_unity_android' + compileSdkVersion 34 + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + kotlin { + jvmToolchain(17) + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + test.java.srcDirs += 'src/test/kotlin' + } + + defaultConfig { + minSdkVersion 22 + // Add proguard rules for the plugin code, these are needed to prevent + // the plugin breaking (reflection is used when passing messages between + // Flutter and Unity). consumerProguardFiles are combined with the consuming + // app's proguard rules when R8 is run. See + // https://developer.android.com/studio/projects/android-library#Considerations + consumerProguardFiles 'lib-proguard-rules.txt' + } + + dependencies { + testImplementation 'org.jetbrains.kotlin:kotlin-test' + // This is to include the .jar file in the libs folder containing Unity classes required + // to compile the plugin (because for example we extend com.unity3d.player.UnityPlayer) + // The .jar file is taken from the currently supported Unity Editor files: for Unity 2022.3 + // LTS on Windows this can be found at: + // \6000.0.8f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes + // Use compileOnly because we only need this to compile the plugin during development - at + // runtime this dependency will be provided by the user's exported Unity project + compileOnly fileTree(dir: 'libs', include: ['*.jar']) + } + + testOptions { + unitTests.all { + useJUnitPlatform() + + testLogging { + events "passed", "skipped", "failed", "standardOut", "standardError" + outputs.upToDateWhen {false} + showStandardStreams = true + } + } + } +} diff --git a/flutter_embed_unity_6000_android/android/gradle/wrapper/gradle-wrapper.jar b/flutter_embed_unity_6000_android/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..41d9927 Binary files /dev/null and b/flutter_embed_unity_6000_android/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/flutter_embed_unity_6000_android/android/gradle/wrapper/gradle-wrapper.properties b/flutter_embed_unity_6000_android/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e411586 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/flutter_embed_unity_6000_android/android/gradlew b/flutter_embed_unity_6000_android/android/gradlew new file mode 100644 index 0000000..1b6c787 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/flutter_embed_unity_6000_android/android/gradlew.bat b/flutter_embed_unity_6000_android/android/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/flutter_embed_unity_6000_android/android/lib-proguard-rules.txt b/flutter_embed_unity_6000_android/android/lib-proguard-rules.txt new file mode 100644 index 0000000..aa9b7b2 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/lib-proguard-rules.txt @@ -0,0 +1,8 @@ +# This file will be combined with the proguard rules used by the main app +# because it is specified in consumerProguardFiles in the library build.gradle + +# We need to tell proguard to keep the Unity classes in the Unity JAR file +# otherwise we get: +# java.lang.ClassNotFoundException: com.unity3d.plugin.UnityAndroidPermissions + +-keep class com.unity3d.plugin.** {*;} \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/android/libs/unity-classes_6000_0_8.jar b/flutter_embed_unity_6000_android/android/libs/unity-classes_6000_0_8.jar new file mode 100644 index 0000000..10a7af9 Binary files /dev/null and b/flutter_embed_unity_6000_android/android/libs/unity-classes_6000_0_8.jar differ diff --git a/flutter_embed_unity_6000_android/android/settings.gradle b/flutter_embed_unity_6000_android/android/settings.gradle new file mode 100644 index 0000000..e84c99b --- /dev/null +++ b/flutter_embed_unity_6000_android/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'flutter_embed_unity_android' diff --git a/flutter_embed_unity_6000_android/android/src/main/AndroidManifest.xml b/flutter_embed_unity_6000_android/android/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a2f47b6 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/FlutterEmbedUnityAndroidPlugin.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/FlutterEmbedUnityAndroidPlugin.kt new file mode 100644 index 0000000..ce87978 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/FlutterEmbedUnityAndroidPlugin.kt @@ -0,0 +1,129 @@ +package com.learntoflutter.flutter_embed_unity_android + +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.logTag +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.uniqueIdentifier +import com.learntoflutter.flutter_embed_unity_android.messaging.SendToFlutter +import com.learntoflutter.flutter_embed_unity_android.messaging.SendToUnity +import com.learntoflutter.flutter_embed_unity_android.platformView.UnityViewFactory +import com.learntoflutter.flutter_embed_unity_android.unity.ResumeUnityOnActivityResume +import com.learntoflutter.flutter_embed_unity_android.unity.UnityPlayerSingleton +import io.flutter.embedding.engine.plugins.FlutterPlugin +import io.flutter.embedding.engine.plugins.activity.ActivityAware +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding +import io.flutter.plugin.common.MethodChannel +import io.flutter.Log +import io.flutter.embedding.engine.plugins.lifecycle.HiddenLifecycleReference + +/** + * This is the entry point for the plugin. The Flutter engine will call onAttachedToEngine first. + * + * The plugin implements ActivityAware so that it can respond to Android activity-related events. + * See https://docs.flutter.dev/release/breaking-changes/plugin-api-migration#uiactivity-plugin + * and https://api.flutter.dev/javadoc/io/flutter/embedding/engine/plugins/activity/ActivityAware.html + * */ +class FlutterEmbedUnityAndroidPlugin : FlutterPlugin, ActivityAware { + // The MethodChannel that will the communication between Flutter and this plugin: + private lateinit var channel: MethodChannel + // Messages from Flutter to this plugin will be sent to Unity via this: + private val methodCallHandler = SendToUnity() + // This lifecycle observer works around an issue with Unity freezing sometimes when + // the app is brought back into foreground + private val resumeUnityOnActivityResume = ResumeUnityOnActivityResume() + // This is just so we can unregister the resumeUnityOnActivityResume lifecycle observer: + private var activityPluginBinding: ActivityPluginBinding? = null + + override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { + Log.d(logTag, "onAttachedToEngine") + // Register for messages from Flutter + channel = MethodChannel(flutterPluginBinding.binaryMessenger, uniqueIdentifier) + channel.setMethodCallHandler(methodCallHandler) + // Register the method channel with SendToFlutter static class (which is called by Unity) + // so messages from Unity to this plugin can be forwarded on to Flutter + SendToFlutter.methodChannel = channel + + // Register a view factory + // On the Flutter side, when we create a PlatformView with our unique identifier: + // AndroidView( + // viewType: Constants.uniqueViewIdentifier, + // ) + // the UnityViewFactory will be invoked to create a UnityPlatformView: + flutterPluginBinding + .platformViewRegistry + .registerViewFactory( + uniqueIdentifier, + UnityViewFactory() + ) + } + + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { + Log.d(logTag, "onDetachedFromEngine") + channel.setMethodCallHandler(null) + } + + // ActivityAware + override fun onAttachedToActivity(binding: ActivityPluginBinding) { + Log.d(logTag, "onAttachedToActivity") + // UnityPlayerSingleton needs the activity which will be received in onAttachedToActivity + // so that the UnityPlayer can be created + UnityPlayerSingleton.flutterActivity = binding.activity + + // See comments on ResumeActivityOnActivityResume for explanation of why this is needed + (binding.lifecycle as HiddenLifecycleReference) + .lifecycle + .addObserver(resumeUnityOnActivityResume) + // So we can remove the observer later on detach + activityPluginBinding = binding + } + + // ActivityAware + override fun onDetachedFromActivityForConfigChanges() { + Log.w( + logTag, "onDetachedFromActivityForConfigChanges - this means the Flutter activity " + + "for your app was destroyed to process a configuration change. This scenario is not supported " + + "and may lead to unexpected behaviour or crashes. You may be able to prevent configuration " + + "changes causing the activity to be destroyed by adding values to the android:configChanges " + + "attribute for your main activity in your app's AndroidManifest.xml. For example, if this " + + "happened on orientation change, add orientation|keyboardHidden|screenSize|screenLayout to " + + "android:configChanges. See " + + "https://developer.android.com/guide/topics/resources/runtime-changes#restrict-activity " + + "for more information" + ) + // This will be called if the Activity is destroyed / recreated due to a 'configuration change'. + // Not sure if this can be handled at all - UnityPlayer is designed to only run in it's own + // activity, on a separate process, and not to be reused + // See https://docs.unity3d.com/Manual/UnityasaLibrary-Android.html + // TODO(Is there any way to handle FlutterActivity onDestroy()?) + + UnityPlayerSingleton.flutterActivity = null + // Remove the lifecycle observer + (activityPluginBinding?.lifecycle as? HiddenLifecycleReference) + ?.lifecycle + ?.removeObserver(resumeUnityOnActivityResume) + } + + // ActivityAware + override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) { + Log.d(logTag, "onReattachedToActivityForConfigChanges") + UnityPlayerSingleton.flutterActivity = binding.activity + + // See comments on ResumeActivityOnActivityResume for explanation of why this is needed + (binding.lifecycle as HiddenLifecycleReference) + .lifecycle + .addObserver(resumeUnityOnActivityResume) + // So we can remove the observer later on detach + activityPluginBinding = binding + } + + // ActivityAware + override fun onDetachedFromActivity() { + Log.w(logTag, "onDetachedFromActivity - this means the Flutter activity " + + "for your app was destroyed. This scenario is not supported") + // TODO(Is there any way to handle FlutterActivity onDestroy()?) + UnityPlayerSingleton.flutterActivity = null + + // Remove the lifecycle observer + (activityPluginBinding?.lifecycle as? HiddenLifecycleReference) + ?.lifecycle + ?.removeObserver(resumeUnityOnActivityResume) + } +} diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/constants/FlutterEmbedConstants.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/constants/FlutterEmbedConstants.kt new file mode 100644 index 0000000..5a277da --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/constants/FlutterEmbedConstants.kt @@ -0,0 +1,15 @@ +package com.learntoflutter.flutter_embed_unity_android.constants + +class FlutterEmbedConstants { + companion object { + const val logTag = "FlutterEmbedLog" + // A unique identifier used by the PlatformViewFactory to identify the Unity Player view, + // and as the unique name of the method channel used for communication between Flutter and native + // Should be the same value in flutter_embed_unity/flutter_embed_unity_platform_interface/lib/flutter_embed_constants.dart + const val uniqueIdentifier = "com.learntoflutter/flutter_embed_unity" + const val methodNameSendToUnity = "sendToUnity" + const val methodNameSendToFlutter = "sendToFlutter" + const val methodNamePauseUnity = "pauseUnity" + const val methodNameResumeUnity = "resumeUnity" + } +} \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/messaging/SendToFlutter.java b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/messaging/SendToFlutter.java new file mode 100644 index 0000000..50cfd63 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/messaging/SendToFlutter.java @@ -0,0 +1,41 @@ +package com.learntoflutter.flutter_embed_unity_android.messaging; + +import static com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.logTag; +import static com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.methodNameSendToFlutter; + +import android.os.Handler; +import android.os.Looper; + +import androidx.annotation.Keep; + +import io.flutter.Log; +import io.flutter.plugin.common.MethodChannel; + +/** + * DO NOT change the name of this class, it's package location or function names: they are + * referenced in C# Unity scripts (/Assets/FlutterEmbed/SendToFlutter/SendToFlutter.cs) + * using reflection, so changing names or location will break people's projects. This also + * means this class must be Java, not Kotlin, because Kotlin companion object methods do not compile + * to Java static methods. + */ + +// IMPORTANT: Do not remove @Keep annotations, they tell the minifier not to remove or rename +// these elements during compilation so that refection from Unity C# does not break on release build +@Keep +public class SendToFlutter { + public static MethodChannel methodChannel = null; + + // IMPORTANT: Do not remove @Keep annotations, they tell the minifier not to remove or rename + // these elements during compilation so that refection from Unity C# does not break on release build + @Keep + public static void sendToFlutter(String data) { + new Handler(Looper.getMainLooper()).post(() -> { + if(methodChannel != null) { + methodChannel.invokeMethod(methodNameSendToFlutter, data); + } + else { + Log.e(logTag, "Couldn't send message from Android to Flutter: method channel not registered"); + } + }); + } +} diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/messaging/SendToUnity.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/messaging/SendToUnity.kt new file mode 100644 index 0000000..432c1ff --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/messaging/SendToUnity.kt @@ -0,0 +1,33 @@ +package com.learntoflutter.flutter_embed_unity_android.messaging + +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.methodNamePauseUnity +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.methodNameResumeUnity +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.methodNameSendToUnity +import com.learntoflutter.flutter_embed_unity_android.unity.UnityPlayerSingleton +import com.unity3d.player.UnityPlayer +import io.flutter.plugin.common.MethodCall +import io.flutter.plugin.common.MethodChannel + +class SendToUnity: MethodChannel.MethodCallHandler { + + override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) { + when (call.method) { + methodNameSendToUnity -> { + val gameObjectMethodNameData = (call.arguments as List<*>).filterIsInstance() + UnityPlayer.UnitySendMessage( + gameObjectMethodNameData[0], // Unity game object name + gameObjectMethodNameData[1], // Game object method name + gameObjectMethodNameData[2]) // Data + } + methodNamePauseUnity -> { + UnityPlayerSingleton.getInstance()?.pause() + } + methodNameResumeUnity -> { + UnityPlayerSingleton.getInstance()?.resume() + } + else -> { + result.notImplemented() + } + } + } +} \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/CopyMotionEvent.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/CopyMotionEvent.kt new file mode 100644 index 0000000..d1b89b9 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/CopyMotionEvent.kt @@ -0,0 +1,56 @@ +// source https://gist.github.com/sebschaef/b803da53217c88e8c691aeed08602193 + +package com.learntoflutter.flutter_embed_unity_android.platformView + +import android.view.MotionEvent + +/* + Copies a MotionEvent. Use the named parameters to modify immutable properties. + Don't forget to recycle the original event if it is not used anymore. +*/ +fun MotionEvent.copy( + downTime: Long = getDownTime(), + eventTime: Long = getEventTime(), + action: Int = getAction(), + pointerCount: Int = getPointerCount(), + pointerProperties: Array? = + (0 until getPointerCount()) + .map { index -> + MotionEvent.PointerProperties().also { pointerProperties -> + getPointerProperties(index, pointerProperties) + } + } + .toTypedArray(), + pointerCoords: Array? = + (0 until getPointerCount()) + .map { index -> + MotionEvent.PointerCoords().also { pointerCoords -> + getPointerCoords(index, pointerCoords) + } + } + .toTypedArray(), + metaState: Int = getMetaState(), + buttonState: Int = getButtonState(), + xPrecision: Float = getXPrecision(), + yPrecision: Float = getYPrecision(), + deviceId: Int = getDeviceId(), + edgeFlags: Int = getEdgeFlags(), + source: Int = getSource(), + flags: Int = getFlags() +): MotionEvent = + MotionEvent.obtain( + downTime, + eventTime, + action, + pointerCount, + pointerProperties, + pointerCoords, + metaState, + buttonState, + xPrecision, + yPrecision, + deviceId, + edgeFlags, + source, + flags + ) \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/CustomFrameLayout.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/CustomFrameLayout.kt new file mode 100644 index 0000000..e24688c --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/CustomFrameLayout.kt @@ -0,0 +1,62 @@ +package com.learntoflutter.flutter_embed_unity_android.platformView + +import android.view.InputDevice +import android.view.MotionEvent +import android.content.Context +import android.widget.FrameLayout +import io.flutter.Log +import android.view.View +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.logTag +import com.learntoflutter.flutter_embed_unity_android.unity.UnityPlayerSingleton + + +public class CustomFrameLayout : FrameLayout { + + constructor(context: Context) : super(context) + + // TODO: Is this still functional if not on UnityPLayer's own FrameLayout? + override fun onWindowVisibilityChanged(visibility: Int) { + Log.d(logTag, "CustomFrameLayout onWindowVisibilityChanged $visibility") + + if(visibility == View.VISIBLE) { + // For some unknown reason, if window visibility changes quickly from View.VISIBLE + // to View.GONE and back to View.VISIBLE, Unity UI appears to freeze. + // This happens, for example, on orientation change, flutter hot reload, and + // occasionally on widget rebuild if there is a significant change to the widget + // tree (you can usually see this as a brief flicker of the widget). + // The underlying UnityPlayer is still active and still responds to messages even + // though it appears frozen, so it is purely a UI thing. Presumably a bug in Unity. + // However using UnityPlayer to render in a View like this is not supported so + // unlikely to be fixed by Unity + // (see https://docs.unity3d.com/Manual/UnityasaLibrary-Android.html) + // As a workaround, pause and resume the player unfreezes the UI + Log.d(logTag, "UnityPlayerSingleton became visible, so pausing and resuming Unity") + + UnityPlayerSingleton.getInstance()?.pause(); + UnityPlayerSingleton.getInstance()?.resume(); + // pause() + // resume() + } + + super.onWindowVisibilityChanged(visibility) + } + + // This is required for Unity's New Input System to receive touch events + override fun dispatchTouchEvent(motionEvent: MotionEvent): Boolean { + motionEvent.source = InputDevice.SOURCE_TOUCHSCREEN + + // true for Flutter Virtual Display, false for Hybrid composition. + if (motionEvent.deviceId == 0) { + /* + Flutter creates a touchscreen motion event with deviceId 0. (https://github.com/flutter/flutter/blob/34b454f42dd6f8721dfe43fc7de5d215705b5e52/packages/flutter/lib/src/services/platform_views.dart#L639) + Unity's new Input System package does not detect these touches, copy the motion event to change the immutable deviceId. + */ + val modifiedEvent = motionEvent.copy(deviceId = -1) + motionEvent.recycle() + return super.onTouchEvent(modifiedEvent) + } else { + return super.onTouchEvent(motionEvent) + } + } + +} \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/IUnityViewStackable.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/IUnityViewStackable.kt new file mode 100644 index 0000000..235b448 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/IUnityViewStackable.kt @@ -0,0 +1,9 @@ +package com.learntoflutter.flutter_embed_unity_android.platformView + +import com.learntoflutter.flutter_embed_unity_android.unity.UnityPlayerSingleton + +interface IUnityViewStackable { + fun attachUnity(unityPlayerSingleton: UnityPlayerSingleton) + fun detachUnity() + var onDispose: (() -> Unit)? +} \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/UnityView.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/UnityView.kt new file mode 100644 index 0000000..95e1f45 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/UnityView.kt @@ -0,0 +1,78 @@ +package com.learntoflutter.flutter_embed_unity_android.platformView + +import android.content.Context +import android.graphics.Color +import android.view.View +import android.widget.FrameLayout +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.logTag +import com.learntoflutter.flutter_embed_unity_android.unity.UnityPlayerSingleton +import io.flutter.Log +import io.flutter.plugin.platform.PlatformView + + +class UnityView(viewFactoryContext: Context) : PlatformView, IUnityViewStackable { + + // UnityPlayerCustom extends UnityPlayer, which is itself a View. So in theory we could + // just use UnityPlayerCustom as the view returned from this PlatformView. However there + // is a problem: + // + // - The view returned by PlatformView must be the same context which is passed to the + // PlatformViewFactory onCreate method, otherwise we get this warning: + // "Unexpected platform view context for view ID 0; some functionality may not work correctly. + // When constructing a platform view in the factory, ensure that the view returned from + // PlatformViewFactory#create returns the provided context from getContext()" + // - The unityEngineSingleton is created using the activity returned from the flutter + // binding. This is not the same context, so adding the unityEngineSingleton directly + // results in the warning above + // + // The solution used here is to use an intermediate View (a FrameLayout) which sits between + // the PlatformView and UnityPlayerCustom. Then we can construct the FrameLayout using the + // context from the view factory, and add the UnityPlayer to that + private val baseView: CustomFrameLayout = CustomFrameLayout(viewFactoryContext) + + override var onDispose: (() -> Unit)? = null + + override fun attachUnity(unityPlayerSingleton: UnityPlayerSingleton) { + baseView.addView(unityPlayerSingleton.getFrameLayout()) + Log.i(logTag, "Attached Unity to view") + } + + override fun detachUnity() { + if(baseView.childCount > 0) { + baseView.removeViewAt(0) + Log.i(logTag, "Detached Unity from view") + } + else { + // This might happen (but probably not desirable) if a view lower down + // on the stack is being disposed + Log.w(logTag, "Detached called on view, but couldn't find Unity") + } + } + + + // PlatformView + override fun getView(): View { + // The view returned by PlatformView must be created from the same context + // which is passed to the PlatformViewFactory onCreate method + return baseView + } + + // PlatformView + override fun onFlutterViewAttached(flutterView: View) { + super.onFlutterViewAttached(flutterView) + Log.d(logTag, "UnityPlatformView onFlutterViewAttached") + } + + // PlatformView + override fun onFlutterViewDetached() { + Log.d(logTag, "UnityPlayerCustom onFlutterViewDetached") + UnityPlayerSingleton.getInstance()?.pause() + super.onFlutterViewDetached() + } + + // PlatformView + override fun dispose() { + Log.d(logTag, "UnityPlatformView dispose") + onDispose?.invoke() + } +} \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/UnityViewFactory.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/UnityViewFactory.kt new file mode 100644 index 0000000..55ae370 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/UnityViewFactory.kt @@ -0,0 +1,67 @@ +package com.learntoflutter.flutter_embed_unity_android.platformView + +import android.content.Context +import android.graphics.Color +import android.view.View +import android.view.ViewGroup +import android.widget.RelativeLayout +import android.widget.TextView +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.logTag +import com.learntoflutter.flutter_embed_unity_android.unity.UnityPlayerSingleton +import io.flutter.BuildConfig +import io.flutter.Log +import io.flutter.plugin.platform.PlatformView +import io.flutter.plugin.platform.PlatformViewFactory + + +class UnityViewFactory : PlatformViewFactory(null) { + + + private val unityViewStack = UnityViewStack() + + override fun create(context: Context, viewId: Int, args: Any?): PlatformView { + Log.d(this.toString(), "UnityViewFactory creating view $viewId") + + try { + val view = UnityView(context) + unityViewStack.pushView(view) + return view + } + catch (e: NoClassDefFoundError) { + val errorMessage = "Unity library not found. Your exported Unity " + + "project is not correctly linked to your Android app. Make sure " + + "you have followed the required setup steps in the " + + "flutter_embed_unity README, in particular the modifications to " + + "your project's settings.gradle, properites.gradle, and your " + + "app module's build.gradle." + Log.e(logTag, errorMessage) + return createErrorView(context, errorMessage) + } + catch(e: Throwable) { + val errorMessage = e.message ?: e.toString() + Log.e(logTag, errorMessage) + return createErrorView(context, errorMessage) + } + } + + private fun createErrorView(context: Context, errorMessage: String) : PlatformView { + return object : PlatformView { + override fun getView(): View { + val layout = RelativeLayout(context) + layout.setBackgroundColor(Color.YELLOW) + if(BuildConfig.DEBUG) { + val textView = TextView(context) + textView.text = errorMessage + textView.setTextColor(Color.BLACK) + val params: RelativeLayout.LayoutParams = + RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) + params.addRule(RelativeLayout.CENTER_IN_PARENT) + textView.layoutParams = params + layout.addView(textView) + } + return layout + } + override fun dispose() {} + } + } +} diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/UnityViewStack.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/UnityViewStack.kt new file mode 100644 index 0000000..65a0fb3 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/platformView/UnityViewStack.kt @@ -0,0 +1,102 @@ +package com.learntoflutter.flutter_embed_unity_android.platformView + +import android.view.WindowManager +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.logTag +import com.learntoflutter.flutter_embed_unity_android.unity.UnityPlayerSingleton +import io.flutter.Log +import io.flutter.util.ViewUtils + +/** + * This class is responsible for making sure that Unity is only ever attached to the + * topmost view in the stack. Unity cannot be attached to more than one view, so there + * should only ever be one EmbedUnity widget on a Flutter screen - however we still + * need to account for the fact that when pushing a new Flutter route / screen onto + * the Navigator stack, both screens are still alive and so we can end up with more + * than one PlatformView at the same time (but only the top one will be visible) + */ +class UnityViewStack { + // This could possibly be implemented as a Queue / Stack collection, but it may + // be possible that a view which isn't the topmost one gets disposed (eg during + // a Navigator.of(contect).pushAndRemoveUntil ?) so safest just to use a list + private val viewStack = ArrayList() + + fun pushView(view: IUnityViewStackable) { + // Unity can only be attached to one view at a time. Therefore, check + // if there are any other active views, and detatch Unity from them first + for(existingView in viewStack) { + existingView.detachUnity() + } + + // Then attach Unity to the new view + val unityPlayerSingleton = UnityPlayerSingleton.getOrCreateInstance() + if(unityPlayerSingleton != null) { + view.attachUnity(unityPlayerSingleton) + + // It's important to call windowFocusChanged, otherwise unity will not start + // (not sure why - UnityPlayer is undocumented) + unityPlayerSingleton.windowFocusChanged(unityPlayerSingleton.getFrameLayout().requestFocus()) + // I don't know why, but when Unity is detached from an existing view and + // added to a new view, we need to pause AND resume instead of just resume: + unityPlayerSingleton.pause() + unityPlayerSingleton.resume() + + // Unity on Android always forces hiding the status bar. + // See https://forum.unity.com/threads/status-bar-always-hidden-on-android.362779 + // See https://github.com/Over17/UnityShowAndroidStatusBar + // This is a workaround to show the status bar: + // TODO: FLAG_FULLSCREEN is deprecated, what to replace it with? + // unityEngineSingleton.windowInsetsController?.show(WindowInsets.Type.statusBars()) doesn't seem to work... + ViewUtils.getActivity(unityPlayerSingleton.context)?.window?.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) + + Log.i(logTag, "Attached Unity to new view") + } + else { + Log.e(logTag, "Unity hasn't been attached to the view because UnityPlayer " + + "couldn't be created") + } + + // Register for onDispose event so we can pop the stack when this view is disposed + view.onDispose = { + popView(view) + } + + // Add view to the stack + viewStack.add(view) + } + + private fun popView(view: IUnityViewStackable) { + // Detatch Unity from the view + view.detachUnity() + + // Remove from the stack + viewStack.remove(view) + + if(viewStack.isNotEmpty()) { + // If there are any remaining views in the stack, attach Unity to the last view to be + // added to the stack + val unityPlayerSingleton = UnityPlayerSingleton.getInstance() + if(unityPlayerSingleton != null) { + viewStack.last().attachUnity(unityPlayerSingleton) + Log.i(logTag, "Reattached Unity to existing view") + // I don't know why, but when Unity is reattached to an existing view + // we need to pause AND resume (even though Unity was never paused?): +// unityPlayerSingleton.windowFocusChanged(unityPlayerSingleton.getFrameLayout().requestFocus()) + unityPlayerSingleton.pause() + unityPlayerSingleton.resume() + } + else { + Log.e(logTag, "Unity hasn't been reattached to the last view in the " + + "stack because UnityPlayer was null") + } + } + else { + // No more Unity views, so pause + Log.i(logTag, "No more EmbedUnity views in stack, pausing Unity") + UnityPlayerSingleton.getInstance()?.pause() + // DO NOT call unityPlayerCustom.destroy(). UnityPlayer will also kill the process it is + // running in, because it was designed to be run within it's own activity launched in it's + // own process. We can't make FlutterActivity launch in it's own process, because it's the + // main (and usually the only) activity. + } + } +} diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/FakeUnityPlayerActivity.java b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/FakeUnityPlayerActivity.java new file mode 100644 index 0000000..0554e30 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/FakeUnityPlayerActivity.java @@ -0,0 +1,26 @@ +package com.learntoflutter.flutter_embed_unity_android.unity; + +import io.flutter.embedding.android.FlutterActivity; + +/** + * A convenience Activity which implements the IFakeUnityPlayerActivity + * interface for you. If your MainActivity cannot extend this class + * (for example, because your MainActivity is already extending a different + * class), your MainActivity should implement IFakeUnityPlayerActivity + * and MUST store the provided object as a public field called mUnityPlayer. + * See comments on IFakeUnityPlayer for more details. + */ +public class FakeUnityPlayerActivity extends FlutterActivity implements IFakeUnityPlayerActivity { + + // don't change the name of this variable; referenced from native code + // See com.unity3d.player.UnityPlayerActivity.java + public Object mUnityPlayer; + + // This is called at Runtime by the flutter_embed_unity plugin. + // It will pass an instance of com.unity3d.player.UnityPlayer + // as the object. + @Override + public void setmUnityPlayer(Object mUnityPlayer) { + this.mUnityPlayer = mUnityPlayer; + } +} \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/IFakeUnityPlayerActivity.java b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/IFakeUnityPlayerActivity.java new file mode 100644 index 0000000..73f4fe6 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/IFakeUnityPlayerActivity.java @@ -0,0 +1,22 @@ +package com.learntoflutter.flutter_embed_unity_android.unity; + +/** + * Unity code assumes that UnityPlayer is only ever run inside + * UnityPlayerActivity.java (you can find the source for this + * class in unityLibrary/src/main/java/com/unity3d/player), + * Unfortunately, native Unity code therefore assumes it can + * find a property called mUnityPlayer in the Activity which + * UnityPlayer runs inside. If it doesn't find this, it will + * crash (usually when attempting to launch XR features). To + * work around this issue, we need to add a property named + * mUnityPlayer in the Flutter main activity. At runtime, the + * plugin will check if your MainActivity implements this + * interface: if it does, it will pass an instance of + * UnityPlayer to be stored in mUnityPlayer. If your Unity + * export uses XR, your app's Flutter activity MUST implement + * this interface and MUST store the given object in a member + * variable called mUnityPlayer. + */ +public interface IFakeUnityPlayerActivity { + void setmUnityPlayer(Object mUnityPlayer); +} diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/ResumeUnityOnActivityResume.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/ResumeUnityOnActivityResume.kt new file mode 100644 index 0000000..b282d3b --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/ResumeUnityOnActivityResume.kt @@ -0,0 +1,24 @@ +package com.learntoflutter.flutter_embed_unity_android.unity + +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleEventObserver +import androidx.lifecycle.LifecycleOwner +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.logTag +import io.flutter.Log + + +// Sometimes (not always) when the Activity is resumed, Unity appears to be frozen. +// There must be something internal in UnityPlayer which does this? +// So, add a lifecycle observer so we can resume Unity. +class ResumeUnityOnActivityResume : LifecycleEventObserver { + override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) { + //Log.d(logTag, "Detected lifecycle change $event") + + if (event == Lifecycle.Event.ON_RESUME) { + Log.d(logTag, "Activity resumed, resuming Unity") + // For some reason, we need to pause first, and then resume. Not sure why. + UnityPlayerSingleton.getInstance()?.pause() + UnityPlayerSingleton.getInstance()?.resume() + } + } +} diff --git a/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/UnityPlayerSingleton.kt b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/UnityPlayerSingleton.kt new file mode 100644 index 0000000..aa52fbc --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/main/kotlin/com/learntoflutter/flutter_embed_unity_android/unity/UnityPlayerSingleton.kt @@ -0,0 +1,103 @@ +package com.learntoflutter.flutter_embed_unity_android.unity + +import android.annotation.SuppressLint +import android.app.Activity +import android.view.InputDevice +import android.view.MotionEvent +import android.view.View +import com.learntoflutter.flutter_embed_unity_android.constants.FlutterEmbedConstants.Companion.logTag +import com.unity3d.player.UnityPlayerForActivityOrService +import io.flutter.Log + + +@SuppressLint("ViewConstructor") +class UnityPlayerSingleton private constructor (activity: Activity) : UnityPlayerForActivityOrService(activity) { + companion object { + // We must use a singleton UnityPlayer, because it was never designed to be + // reused in multiple views. Calling unityPlayer.destroy() will kill the + // whole process the FlutterActivity runs in. The workaround is to only + // create UnityPlayer once, and keep it alive when the view is disposed + // so it can be reattach onto the next view. I think it's okay to suppress + // warning about static field leak because the UnityPlayer must be kept + // alive while the app is running + @SuppressLint("StaticFieldLeak") + private var singleton: UnityPlayerSingleton? = null + + // The UnityPlayer requires a reference to the activity it is running in + // when creating it. For Flutter, this means the main Flutter activity. + // This should be set by the plugin onAttachedToActivity() + @SuppressLint("StaticFieldLeak") + var flutterActivity: Activity? = null + + fun getOrCreateInstance() : UnityPlayerSingleton? { + singleton.let{ singleton -> + if(singleton != null) { + return singleton + } + else { + flutterActivity.let { flutterActivity -> + if(flutterActivity != null) { + // UnityPlayerSingleton expects to be passed a context which is an Activity. + // UnityPlayer will crash during resume() if it isn't (NullPointerException: Attempt + // to invoke virtual method + // 'android.content.ContentResolver android.content.Context.getContentResolver()' + // on a null object reference) + val player = UnityPlayerSingleton(flutterActivity) + + // This is to work around issue when using Unity AR features + // See comments on IUnityPlayerActivity for explanation + if(flutterActivity is IFakeUnityPlayerActivity) { + flutterActivity.setmUnityPlayer(player) + } + else { + // This is optional: if the user isn't using AR or anything else + // which triggers Unity to access mUnityPlayer in the Activity, + // this workaround isn't needed, so just continue if not + // IFakeUnityPlayerActivity + } + + this.singleton = player + return player + } + else { + Log.e(logTag, "Error creating UnityPlatformView: an activity is not available. " + + "Make sure that a UnityPlatformView is only requested after the plugin has " + + "attached to the activity (see FlutterEmbedUnityAndroidPlugin.onAttachedToActivity)") + return null + } + } + } + } + } + + // should only be called after getOrCreateInstance! + fun getInstance(): UnityPlayerSingleton? { + return singleton + } + } + + // Overriding kill() was an experiment to try to resolve app closing / crashing when + // player.destroy() is called. It didn't work. The problem is that calling player.destroy() also + // kills the process it is running in (the entire app, or just the activity if the activity + // uses a separate process as specified by android:process in AndroidManifest.xml, see + // https://developer.android.com/guide/topics/manifest/activity-element#proc) + // So, the idea was to override the kill() function to do nothing. This works, however + // the next time UnityPlayer is created, you then get an exception: + // + // JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception + // java.lang.RuntimeException: PlayAssetDeliveryUnityWrapper.init() should be called only once. + // Use getInstance() instead. + // F/android_exampl(31048): java_vm_ext.cc:577] at com.unity3d.player.PlayAssetDeliveryUnityWrapper + // com.unity3d.player.PlayAssetDeliveryUnityWrapper.init(android.content.Context) + // + // See also: https://forum.unity.com/threads/unityplayer-on-android-using-single-process.847555/ + // https://stackoverflow.com/questions/23467994/errors-managing-the-unityplayer-lifecycle-in-a-native-android-application + // https://stackoverflow.com/questions/36718387/how-to-keep-android-app-running-and-quit-unity-activity + // https://forum.unity.com/threads/how-to-restart-unity-player-android.567790/ + // + // So, abandoned this hack in favour of using a singleton UnityPlayer which is never destroyed + +// override fun kill() { +// Process.killProcess(Process.myPid()) +// } +} diff --git a/flutter_embed_unity_6000_android/android/src/test/kotlin/com/learntoflutter/flutter_embed_unity_test/FlutterEmbedUnityPluginTest.kt b/flutter_embed_unity_6000_android/android/src/test/kotlin/com/learntoflutter/flutter_embed_unity_test/FlutterEmbedUnityPluginTest.kt new file mode 100644 index 0000000..3e336c1 --- /dev/null +++ b/flutter_embed_unity_6000_android/android/src/test/kotlin/com/learntoflutter/flutter_embed_unity_test/FlutterEmbedUnityPluginTest.kt @@ -0,0 +1,27 @@ +package com.learntoflutter.flutter_embed_unity_android + +import io.flutter.plugin.common.MethodCall +import io.flutter.plugin.common.MethodChannel +import kotlin.test.Test +import org.mockito.Mockito + +/* + * This demonstrates a simple unit test of the Kotlin portion of this plugin's implementation. + * + * Once you have built the plugin's example app, you can run these tests from the command + * line by running `./gradlew testDebugUnitTest` in the `example/android/` directory, or + * you can run them directly from IDEs that support JUnit such as Android Studio. + */ + +internal class FlutterEmbedUnityPluginTest { + @Test + fun onMethodCall_getPlatformVersion_returnsExpectedValue() { + val plugin = FlutterEmbedUnityPlugin() + + val call = MethodCall("getPlatformVersion", null) + val mockResult: MethodChannel.Result = Mockito.mock(MethodChannel.Result::class.java) + plugin.onMethodCall(call, mockResult) + + Mockito.verify(mockResult).success("Android " + android.os.Build.VERSION.RELEASE) + } +} diff --git a/flutter_embed_unity_6000_android/example/.gitignore b/flutter_embed_unity_6000_android/example/.gitignore new file mode 100644 index 0000000..24476c5 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/.gitignore @@ -0,0 +1,44 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/flutter_embed_unity_6000_android/example/README.md b/flutter_embed_unity_6000_android/example/README.md new file mode 100644 index 0000000..fe6f011 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/README.md @@ -0,0 +1,13 @@ +# flutter_embed_unity_android_example + +Demonstrates how to use the flutter_embed_unity_6000_android package + +## Getting Started + +- Checkout this repository +- Create a folder called `unityLibrary` at: + - `flutter_embed_unity/flutter_embed_unity_6000_android/example/android/unityLibrary` +- Install Unity 6000 +- Open [the example Unity project](https://github.com/jamesncl/flutter_embed_unity/tree/main/example_unity_2022_3_project) +- In Unity, go to `Flutter Embed -> Export project to Flutter app (Android)`, and choose the export folder you created earlier +- Now run the example Flutter project `flutter_embed_unity/flutter_embed_unity_6000_android/example` diff --git a/flutter_embed_unity_6000_android/example/analysis_options.yaml b/flutter_embed_unity_6000_android/example/analysis_options.yaml new file mode 100644 index 0000000..61b6c4d --- /dev/null +++ b/flutter_embed_unity_6000_android/example/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/flutter_embed_unity_6000_android/example/android/.gitignore b/flutter_embed_unity_6000_android/example/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/flutter_embed_unity_6000_android/example/android/app/build.gradle b/flutter_embed_unity_6000_android/example/android/app/build.gradle new file mode 100644 index 0000000..f6a4ccf --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/app/build.gradle @@ -0,0 +1,74 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + namespace "com.learntoflutter.flutter_embed_unity_android_example" + compileSdkVersion 34 + // ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + kotlin { + jvmToolchain(17) + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.learntoflutter.flutter_embed_unity_android_example" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdkVersion 23 + targetSdkVersion 34 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + debug { + // Turn on minification to test the plugin will still work + // when R8 / minification is enabled in release mode: + // minifyEnabled true + // shrinkResources true + } + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation project(':unityLibrary') +} \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/example/android/app/src/debug/AndroidManifest.xml b/flutter_embed_unity_6000_android/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/AndroidManifest.xml b/flutter_embed_unity_6000_android/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..05b2bc5 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/java/com/jamesncl/dev/flutter_embed_unity_android_example/MainActivity.java b/flutter_embed_unity_6000_android/example/android/app/src/main/java/com/jamesncl/dev/flutter_embed_unity_android_example/MainActivity.java new file mode 100644 index 0000000..8e9156e --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/app/src/main/java/com/jamesncl/dev/flutter_embed_unity_android_example/MainActivity.java @@ -0,0 +1,7 @@ +package com.learntoflutter.flutter_embed_unity_android_example; + +import com.learntoflutter.flutter_embed_unity_android.unity.FakeUnityPlayerActivity; + +public class MainActivity extends FakeUnityPlayerActivity { + +} diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/res/drawable-v21/launch_background.xml b/flutter_embed_unity_6000_android/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/res/drawable/launch_background.xml b/flutter_embed_unity_6000_android/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..db77bb4 Binary files /dev/null and b/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..17987b7 Binary files /dev/null and b/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..09d4391 Binary files /dev/null and b/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..d5f1c8d Binary files /dev/null and b/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..4d6372e Binary files /dev/null and b/flutter_embed_unity_6000_android/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/res/values-night/styles.xml b/flutter_embed_unity_6000_android/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/flutter_embed_unity_6000_android/example/android/app/src/main/res/values/styles.xml b/flutter_embed_unity_6000_android/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/flutter_embed_unity_6000_android/example/android/app/src/profile/AndroidManifest.xml b/flutter_embed_unity_6000_android/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/flutter_embed_unity_6000_android/example/android/build.gradle b/flutter_embed_unity_6000_android/example/android/build.gradle new file mode 100644 index 0000000..dc10b57 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/build.gradle @@ -0,0 +1,34 @@ +buildscript { + ext.kotlin_version = '1.9.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:8.3.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + flatDir { + dirs "${project(':unityLibrary').projectDir}/libs" + } + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/flutter_embed_unity_6000_android/example/android/gradle.properties b/flutter_embed_unity_6000_android/example/android/gradle.properties new file mode 100644 index 0000000..0c60bdf --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/gradle.properties @@ -0,0 +1,7 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false +unityStreamingAssets= \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/example/android/gradle/wrapper/gradle-wrapper.properties b/flutter_embed_unity_6000_android/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..4d6272d --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip diff --git a/flutter_embed_unity_6000_android/example/android/settings.gradle b/flutter_embed_unity_6000_android/example/android/settings.gradle new file mode 100644 index 0000000..06c0396 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/android/settings.gradle @@ -0,0 +1,14 @@ +include ':app' +include ':unityLibrary' +// This additional project is required to build with Unity XR: +include ':unityLibrary:xrmanifest.androidlib' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/flutter_embed_unity_6000_android/example/integration_test/plugin_integration_test.dart b/flutter_embed_unity_6000_android/example/integration_test/plugin_integration_test.dart new file mode 100644 index 0000000..4bf019d --- /dev/null +++ b/flutter_embed_unity_6000_android/example/integration_test/plugin_integration_test.dart @@ -0,0 +1,24 @@ +// // This is a basic Flutter integration test. +// // +// // Since integration tests run in a full Flutter application, they can interact +// // with the host side of a plugin implementation, unlike Dart unit tests. +// // +// // For more information about Flutter integration tests, please see +// // https://docs.flutter.dev/cookbook/testing/integration/introduction +// +// +// import 'package:flutter_test/flutter_test.dart'; +// import 'package:flutter_embed_unity_android/flutter_embed_unity_android_platform_interface.dart'; +// import 'package:integration_test/integration_test.dart'; +// +// void main() { +// IntegrationTestWidgetsFlutterBinding.ensureInitialized(); +// +// testWidgets('getPlatformVersion test', (WidgetTester tester) async { +// final FlutterEmbedUnityAndroid plugin = FlutterEmbedUnityAndroid(); +// final bool canLaunch = await plugin.canLaunch('test'); +// // The version string depends on the host platform running the test, so +// // just assert that some non-empty string is returned. +// expect(canLaunch, true); +// }); +// } diff --git a/flutter_embed_unity_6000_android/example/lib/main.dart b/flutter_embed_unity_6000_android/example/lib/main.dart new file mode 100644 index 0000000..4e96d96 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/lib/main.dart @@ -0,0 +1,268 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_embed_unity/flutter_embed_unity.dart'; +import 'package:intl/intl.dart'; + +void main() { + runApp(const ExampleApp()); +} + +class ExampleApp extends StatefulWidget { + const ExampleApp({super.key}); + + @override + State createState() => _ExampleAppState(); +} + +class _ExampleAppState extends State { + + // When converting between strings and numbers in a message protocol + // always use a fixed locale, to prevent unexpected parsing errors when + // the user's locale is different to the locale used by the developer + // (eg the decimal separator might be different) + static final _fixedLocaleNumberFormatter = NumberFormat.decimalPatternDigits( + locale: 'en_gb', + decimalDigits: 2, + ); + + bool? _isUnityArSupportedOnDevice; + bool _isArSceneActive = false; + double _rotationSpeed = 30; + int _numberOfTaps = 0; + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar( + title: const Text('Plugin example app'), + ), + body: SafeArea( + child: Builder( + builder: (context) { + final theme = Theme.of(context); + final bool? isUnityArSupportedOnDevice = _isUnityArSupportedOnDevice; + final String arStatusMessage; + + if(isUnityArSupportedOnDevice == null) { + arStatusMessage = "checking..."; + } + else if(isUnityArSupportedOnDevice) { + arStatusMessage = "supported"; + } + else { + arStatusMessage = "not supported on this device"; + } + + return Column( + children: [ + Expanded( + child: EmbedUnity( + onMessageFromUnity: (String data) { + // A message has been received from a Unity script + if(data == "touch"){ + setState(() { + _numberOfTaps += 1; + }); + } + else if(data == "scene_loaded") { + _sendRotationSpeedToUnity(_rotationSpeed); + } + else if(data == "ar:true") { + setState(() { + _isUnityArSupportedOnDevice = true; + }); + } + else if(data == "ar:false") { + setState(() { + _isUnityArSupportedOnDevice = false; + }); + } + }, + ), + ), + Padding( + padding: const EdgeInsets.all(16), + child: Text( + "Flutter logo has been touched $_numberOfTaps times", + textAlign: TextAlign.center, + style: theme.textTheme.titleMedium, + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Row( + children: [ + Text("Activate AR ($arStatusMessage)"), + Switch( + value: _isArSceneActive, + onChanged: isUnityArSupportedOnDevice != null && isUnityArSupportedOnDevice ? (value) { + sendToUnity( + "SceneSwitcher", + "SwitchToScene", + _isArSceneActive ? "FlutterEmbedExampleScene" : "FlutterEmbedExampleSceneAR", + ); + setState(() { + _isArSceneActive = value; + }); + } : null, + ), + ], + ), + ), + Row( + children: [ + const Padding( + padding: EdgeInsets.only(left: 16), + child: Text( + "Speed", + ), + ), + Expanded( + child: Slider( + min: -200, + max: 200, + value: _rotationSpeed, + onChanged: (value) { + setState(() { + _rotationSpeed = value; + }); + _sendRotationSpeedToUnity(value); + }, + ), + ), + ], + ), + Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: ElevatedButton( + onPressed: () { + pauseUnity(); + }, + child: const Text("Pause"), + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: ElevatedButton( + onPressed: () { + resumeUnity(); + }, + child: const Text("Resume"), + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: ElevatedButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => const Route2()), + ); + }, + child: const Text("Open route 2", textAlign: TextAlign.center), + ), + ), + ), + ], + ) + ], + ); + }, + ), + ), + ), + ); + } + + void _sendRotationSpeedToUnity(double rotationSpeed) { + sendToUnity( + "FlutterLogo", + "SetRotationSpeed", + _fixedLocaleNumberFormatter.format(rotationSpeed), + ); + } +} + + +class Route2 extends StatelessWidget { + + const Route2(); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Route 2'), + ), + body: SafeArea( + child: Builder( + builder: (context) => + Column( + children: [ + const Padding( + padding: EdgeInsets.all(16), + child: Text( + "Unity can only be shown in 1 widget at a time. Therefore if a second route " + "with a FlutterEmbed is pushed onto the stack, Unity is 'detached' from " + "the first route, and attached to the second. When the second route is " + "popped from the stack, Unity is reattached to the first route.", + ), + ), + const Expanded( + child: EmbedUnity(), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const BackButton(), + ElevatedButton( + onPressed: () { + showDialog(context: context, builder: (_) => const Route3()); + }, + child: const Text("Open route 3", textAlign: TextAlign.center), + ), + ], + ), + ) + ], + ) + ), + ) + ); + } +} + + +class Route3 extends StatelessWidget { + + const Route3(); + + @override + Widget build(BuildContext context) { + return const AlertDialog( + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "Route 3", + textAlign: TextAlign.center, + ), + SizedBox( + height: 100, + width: 80, + child: EmbedUnity(), + ), + ], + ), + ); + } +} \ No newline at end of file diff --git a/flutter_embed_unity_6000_android/example/pubspec.lock b/flutter_embed_unity_6000_android/example/pubspec.lock new file mode 100644 index 0000000..94590a2 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/pubspec.lock @@ -0,0 +1,290 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + file: + dependency: transitive + description: + name: file + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" + source: hosted + version: "6.1.4" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_embed_unity: + dependency: "direct main" + description: + path: "../../flutter_embed_unity" + relative: true + source: path + version: "1.1.1" + flutter_embed_unity_2022_3_ios: + dependency: transitive + description: + name: flutter_embed_unity_2022_3_ios + sha256: "1829acc64ff3014272de96fe7cceb17411f50b78e9be32dca5d93ac9433211c3" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + flutter_embed_unity_6000_android: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "0.0.1" + flutter_embed_unity_platform_interface: + dependency: transitive + description: + name: flutter_embed_unity_platform_interface + sha256: "4fd2dcc09ec8f35f35ea914d89e404354216a56f8415d719b7c9edb058ca6868" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + url: "https://pub.dev" + source: hosted + version: "2.0.3" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + intl: + dependency: "direct main" + description: + name: intl + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + url: "https://pub.dev" + source: hosted + version: "0.18.1" + lints: + dependency: transitive + description: + name: lints + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" + source: hosted + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" + source: hosted + version: "0.5.0" + meta: + dependency: transitive + description: + name: meta + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + url: "https://pub.dev" + source: hosted + version: "1.10.0" + path: + dependency: transitive + description: + name: path + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" + source: hosted + version: "1.8.3" + platform: + dependency: transitive + description: + name: platform + sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d + url: "https://pub.dev" + source: hosted + version: "2.1.6" + process: + dependency: transitive + description: + name: process + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.dev" + source: hosted + version: "4.2.4" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" + source: hosted + version: "0.6.1" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583 + url: "https://pub.dev" + source: hosted + version: "11.10.0" + web: + dependency: transitive + description: + name: web + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" + url: "https://pub.dev" + source: hosted + version: "3.0.2" +sdks: + dart: ">=3.2.0-194.0.dev <4.0.0" + flutter: ">=3.3.0" diff --git a/flutter_embed_unity_6000_android/example/pubspec.yaml b/flutter_embed_unity_6000_android/example/pubspec.yaml new file mode 100644 index 0000000..04769ec --- /dev/null +++ b/flutter_embed_unity_6000_android/example/pubspec.yaml @@ -0,0 +1,31 @@ +name: flutter_embed_unity_android_example +description: Demonstrates how to use the flutter_embed_unity_android plugin. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +environment: + sdk: '>=3.0.6 <4.0.0' + flutter: ">=3.3.0" + +dependencies: + flutter: + sdk: flutter + + flutter_embed_unity_6000_android: + path: ../ + flutter_embed_unity: + path: ../../flutter_embed_unity + + intl: any + + +dev_dependencies: + integration_test: + sdk: flutter + flutter_test: + sdk: flutter + + flutter_lints: ^2.0.3 + + +flutter: + uses-material-design: true diff --git a/flutter_embed_unity_6000_android/example/test/widget_test.dart b/flutter_embed_unity_6000_android/example/test/widget_test.dart new file mode 100644 index 0000000..90bc5d5 --- /dev/null +++ b/flutter_embed_unity_6000_android/example/test/widget_test.dart @@ -0,0 +1,27 @@ +// // This is a basic Flutter widget test. +// // +// // To perform an interaction with a widget in your test, use the WidgetTester +// // utility in the flutter_test package. For example, you can send tap and scroll +// // gestures. You can also use WidgetTester to find child widgets in the widget +// // tree, read text, and verify that the values of widget properties are correct. +// +// import 'package:flutter/material.dart'; +// import 'package:flutter_test/flutter_test.dart'; +// +// import 'package:flutter_embed_unity_android_example/main.dart'; +// +// void main() { +// testWidgets('Verify Platform version', (WidgetTester tester) async { +// // Build our app and trigger a frame. +// await tester.pumpWidget(const ExampleApp()); +// +// // Verify that platform version is retrieved. +// expect( +// find.byWidgetPredicate( +// (Widget widget) => widget is Text && +// widget.data!.startsWith('Running on:'), +// ), +// findsOneWidget, +// ); +// }); +// } diff --git a/flutter_embed_unity_6000_android/lib/flutter_embed_unity_6000_android.dart b/flutter_embed_unity_6000_android/lib/flutter_embed_unity_6000_android.dart new file mode 100644 index 0000000..0407a05 --- /dev/null +++ b/flutter_embed_unity_6000_android/lib/flutter_embed_unity_6000_android.dart @@ -0,0 +1,4 @@ + +// Nothing is needed here. This platform plugin uses the Flutter Method Channel +// mechanism from the public-facing package, so the only thing that needs +// implementing is the native side diff --git a/flutter_embed_unity_6000_android/pubspec.yaml b/flutter_embed_unity_6000_android/pubspec.yaml new file mode 100644 index 0000000..1832bbb --- /dev/null +++ b/flutter_embed_unity_6000_android/pubspec.yaml @@ -0,0 +1,32 @@ +name: flutter_embed_unity_6000_android +description: Android implementation for Unity 6000.0 of the flutter_embed_unity plugin. +version: 0.0.1 +homepage: https://learntoflutter.com +repository: https://github.com/learntoflutter/flutter_embed_unity/tree/main/flutter_embed_unity_6000_android +issue_tracker: https://github.com/learntoflutter/flutter_embed_unity/issues +documentation: https://github.com/learntoflutter/flutter_embed_unity/wiki +funding: + - https://www.buymeacoffee.com/pPDtNs6A6T +topics: + - unity + +environment: + sdk: '>=3.0.6 <4.0.0' + flutter: ">=3.3.0" + +dependencies: + flutter: + sdk: flutter + flutter_embed_unity_platform_interface: ^1.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + +flutter: + plugin: + implements: flutter_embed_unity + platforms: + android: + package: com.learntoflutter.flutter_embed_unity_android + pluginClass: FlutterEmbedUnityAndroidPlugin \ No newline at end of file